[Delphi] Как можно сделать так, чтобы загрузить фаил

2mmail2

Суть вопроса:
Через opendialog фаил открыть не проблема, однако как сделать так, чтобы фаил можно было загрузить, кликнув по нему в продонике windows.
То есть возникает два вопроса - как Винда передает параметр открытия файла проге и как его прога принимает.

yolki

зарегистрировать обработчик файла на свою программу.
прописаться в реестре или когда винда спросит чем открывать файл с расширением .bla

2mmail2

Хорошо, это в винде работает. Как прогу объяснить - что загрузился фаил при старте?
Насколько я понял - имя файла передается в качестве параметра строки запуска в оболочке, или я не прав?

Elina74

Видимо, тебе нужно сделать ассоциацию некоторого расширения (типа файла) со своей прогой. Для этого надо кое-что написать в реестр, что именно, сразу не скажу.
Винда берет имя исполняемой программы и имя файла в кавычках и выполняет команду типа
"c:/path/program.exe" "file.ext"

yolki

прога принимает просто - через параметры командной строки (а это тоже прописыватеся в обработчиках).
например, на *.doc файлы есть обработчики:

(Открыть - дефолтный)
принимает через аналог argc/argv = ParamCount, ParamStr(i)

yolki

На разные действия можно по-разному настроить. например, на Open:
"C:\Program Files\MyCompany\MyProg.exe" /Open "%1"
На Print:
"C:\Program Files\MyCompany\MyProg.exe" /Print "%1"

2mmail2

Спасибо большое, но как это проге объяснить? Просто нет нормальной литературы под рукой, а нужно быстро

Elina74

В событии Form.OnLoad (вроде оно так называется надо использовать функции для получения параметров ParamCount, ParamStr(i).
Почитай документацию по ним, многое станет ясно.

yolki

Прописать в реестре просто -
создаёшь файл, скажем a.my (пусть *.my будут файлы от этой программы):

дальше жмёшь на него и под возмущённые крики винды устанавливаешь свою прогу:



код:

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
Memo1.Lines.Add('Мы пущены с такими параметрами:');
for i:=0 to ParamCount do
Memo1.Lines.Add(ParamStr(i;
end;

На форме одна мемо.

2mmail2

Спасибо. Это именно то, что и было надо
Оставить комментарий
Имя или ник:
Комментарий: