Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 40

/ вопрос решён /

Здравствуйте эксперты!
Вот сейчас пишу текстовый редактор...
Но одно не могу понять, как, чтобы при открытии любого файла (например, с расширением txt) открывалась моя программа и в RichEdit загружался текст из данного файла...
Даже после регистрации моей программы к расширению txt при открытии этого файла программа открывается, но текст не загружается... Помогите, кто может...

feenords Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: feenords (статус: 1-ый класс)
Вопрос отправлен: 17 июня 2006, 01:24
Состояние вопроса: решён, ответов: 3.

Ответ #1. Отвечает эксперт: Dron

Раз программа уже запускается для данного типа файлов, значит вам осталась совсем малость. Windows передаёт путь к открываемому файлу в первом параметре к программе. Прочитать его можно так: ParamStr(1). Поэтому для загрузки вам нужно при запуске программы делать что-то вроде этого:
If FileExists(ParamStr(1)) Then
RichEdit.Lines.LoadFromFile(ParamStr(1));

Ответ отправил: Dron (статус: Студент)
Время отправки: 17 июня 2006, 09:30
Оценка за ответ: 5

Ответ #2. Отвечает эксперт: bruder

Здравствуйте, feenords.
Всё очень просто. Дело в том, что твоя программа запускается с параметром, в котором указан путь к открываемому файлу. По событию OnCreate своей формы впиши код.

Приложение:
  1. if ParamCount>0 then
  2. RichEdit1.Lines.LoadFromFile(ParamStr(1));


Ответ отправил: bruder (статус: 4-ый класс)
Время отправки: 17 июня 2006, 09:36
Оценка за ответ: 5

Ответ #3. Отвечает эксперт: Евгений Малышев

Здравствуйте, feenords.

Используй параметры командной строки для программы. Имя открываемого файла должно передаваться одним из параметров.
Узнать количество параметров можно при помощи функции ParamCount.
Узнать значение нужного параметра можно при помощи функции ParamStr.

Приложение:
  1. if ParamCount > 0 then
  2. RichEdit1.Lines.LoadFromFile(ParamStr(1));


Ответ отправил: Евгений Малышев (статус: 1-ый класс)
Время отправки: 18 июня 2006, 21:14
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 16; последнее сообщение — 21 июня 2006, 00:21; участников в обсуждении: 4.
bruder

bruder (статус: 4-ый класс), 17 июня 2006, 09:38 [#1]:

Чёрт! На 6 минут опоздал. :) Получилось ответ повторил... :(
Dron

Dron (статус: Студент), 17 июня 2006, 09:47 [#2]:

Думаю, что не страшно :-)
С уважением.
feenords

feenords (статус: 1-ый класс), 18 июня 2006, 00:15 [#3]:

Спасибо за ответы! Как освобожусь - проверю.... заранее спасибо... по высшей оценке каждому....
feenords

feenords (статус: 1-ый класс), 18 июня 2006, 00:17 [#4]:

Чуточку опоздал....
feenords

feenords (статус: 1-ый класс), 18 июня 2006, 00:45 [#5]:

Почему-то выставление оценки не действует...
bruder

bruder (статус: 4-ый класс), 18 июня 2006, 10:43 [#6]:

Письма с ответами, которые тебе пришли, открой в браузере. Выдели RadioButton с надписью "5" и нажми оценить.
feenords

feenords (статус: 1-ый класс), 19 июня 2006, 00:54 [#7]:

Просто пользуюсь почтовым клиентом ("птичкой" от Mozilla), а почтовик закинул... там сейчас не пропихнуться... ладно, постараюсь заглянуть в недра...
feenords

feenords (статус: 1-ый класс), 19 июня 2006, 00:56 [#8]:

А теперь есть ещё маленький вопросик...
Вопрос такой:
использую такой подход для загрузки текста из файлов при их открытии не из программы - спасибо Вам - (см. вставку).
Что надо сделать (какой код вставить заместо ...), чтобы имя открытого файла передалось в какую-либо переменную (например, FileName)? Перепробывал несколько вариантов - не получилось... Заранее спасибо.

При FormCreate:
***
If ParamCount>0 then
begin
RichEdit1.Lines.LoadFromFile(ParamStr(1));
FileName:=...;
Form1.Caption:=FileName;
end;
***
feenords

feenords (статус: 1-ый класс), 19 июня 2006, 01:31 [#9]:

Открываю в браузере... выставляю пять и жму отправить оценку... и всё... ничего не происходит... то ли это мой диалап не справляется с нагрузкой, то ли ничего не должно высвечиваться (никакое оповещение, что оценка отправлена)... но некоторым поставил... посмотрим, может появится...
И вообще, у меня предложение к админу - поставьте подачу оценок напротив ответов... ведь авторизация идёт - если автор и кто авторизирован одно лицо, то что бы можно было оценки выставлять...
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 19 июня 2006, 09:53 [#10]:

Ок, я подумаю над этим. Но вообще всё должно работать и сообщение соответствующее выводится.
А по поводу вашего вопроса:
FileName:=ParamStr(1);
Или только имя файла (без пути):
FileName:=ExtractFileName(ParamStr(1));
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 19 июня 2006, 10:39 [#11]:

Эх... Сегодня настроение что-то хорошее :-)
feenords: как и просили - теперь оценивать ответы можно прямо здесь, через web :-) Наслаждайтесь :-)
bruder

bruder (статус: 4-ый класс), 19 июня 2006, 12:10 [#12]:

Вот и отлично. Ждём оценок =)
feenords

feenords (статус: 1-ый класс), 20 июня 2006, 00:19 [#13]:

Уже некоторым поставил... выставляю другим...
А данную проблему решил - оказалось элементарно...
Так как мне нужен был полный путь, я поступил так:
FileName:=ExtractFilePath(ParamStr(1)) + ExtractFileName(ParamStr(1));
Спасибо за ответы...
И за новый способ выставления оценок...
Хотя он и чуточку глючный...
Ответ долго не мог написать... выдавал, что оценка уже принята... пока несколько раз не обновил страницу...
bruder

bruder (статус: 4-ый класс), 20 июня 2006, 08:38 [#14]:

>FileName:=ExtractFilePath(ParamStr(1)) + ExtractFileName(ParamStr(1));
:-D Проще так FileName:=ParamStr(1);
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 20 июня 2006, 08:47 [#15]:

feenords, все вопросы относительно работы системы отправляйте на expert@, а не пишите где попало.
feenords

feenords (статус: 1-ый класс), 21 июня 2006, 00:21 [#16]:

Извините - исправлюсь...

31 января 2011, 19:22: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:45
Выполнено за 0.02 сек.