У меня есть файл в котором написано следующее
<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. Ассоциировать его с программой тоже достаточно просто.
Но что делать дальше? Как "сказать" программе, что при двойном щелчке на файле нужно запуститься и выполнить определенную процедуру?