Как открыть файл по своей программой (ассоциировать его с программой)?

У меня есть файл в котором написано следующее
<PROJECT_SETTINGS>
<FOLDER_PATH>D:\test</FOLDER_PATH>
<ZIP_FILE_PATH>D:\arhive_test</ZIP_FILE_PATH>
</PROJECT_SETTINGS>

Вот такой xml файл с настройками проекта.

В программе есть процедура
//Загрузить все настройки проекта из файла
procedure read_project_from_file(file_path:string);
var
current_string:string;
text_file:TextFile;
income_tags:boolean;
begin
AssignFile (text_file, file_path);
Reset (text_file);
while not EOF(text_file) do
begin
readln(text_file, current_string);

if (CountPos('<PROJECT_SETTINGS>',current_string)>0) then income_tags:=true;
if (CountPos('</PROJECT_SETTINGS>',current_string)>0) then income_tags:=false;

if (income_tags=true) then
begin
if (CountPos('<FOLDER_PATH>',current_string)>0) then folder_path:=get_stext('<FOLDER_PATH>','</FOLDER_PATH>',current_string);
if (CountPos('<ZIP_FILE_PATH>',current_string)>0) then zip_file_folder:=get_stext('<ZIP_FILE_PATH>','</ZIP_FILE_PATH>',current_string);
end;

//Заполняем форму
if (income_tags=false) then
begin
Form1.folder_path_directory_edit.Text:=folder_path;
Form1.zip_file_path_directory_edit.Text:=zip_file_folder;
end;
end;
CloseFile (text_file);
end;

Процедура построчно читает файл, находит там теги, например FOLDER_PATH и все что между ними копирует в переменные. А далее из переменных в "текст-эдит" на форме.
И вот "текст-эдит" содержит путь к папке.

Вызов процедуры происходит по нажатию кнопки
procedure TForm1.open_project_buttonClick(Sender: TObject);
begin
if not OpenDialog1.Execute then Exit;
read_project_from_file(OpenDialog1.FileName);
end;

Нажал на кнопку, открылся диалог, указал файл, процедура считала с него строки и подставила их содержимое в поля. Всё просто.

Теперь мне бы хотелось открывать этот текстовый xml файл не только из программы, но и по двойному щелчку.
Как это можно сделать?

Разумеется у файла есть свое расширение .my_xml. Ассоциировать его с программой тоже достаточно просто.
Но что делать дальше? Как "сказать" программе, что при двойном щелчке на файле нужно запуститься и выполнить определенную процедуру?
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 3
HemulGM
@HemulGM
Delphi Developer, сис. админ
Гугл: "ассоциация фалов Delphi"
Первый же пункт отвечает на твой вопрос.
Ответ написан
Zoominger
@Zoominger
System Engineer
Путь к файлу будет аргументом для этой программы при запуске. Просто пропишите код, который при запуске вашей программы прочтёт аргумент, и если там есть путь к файлу, то сразу передаст его в функцию-парсер.
Ответ написан
@zedxxx
Когда вы сделали ассоциацию расширения файла с программой, Windows будет запускать вашу программу передавая имя файла, по которому кликнули, в параметрах командной строки. Таким образом, при старте приложения вам надо проверить наличие этого параметра и если он есть, то вызвать процедуру открытия файла.

Единственное, что следует учесть, что первым параметром всегда идёт имя вашей программы, так что смотреть надо на второй параметр.

Для доступа к параметрам существует функция System.ParamStr.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы