![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Теряется путь от исполняемой папки
AIK © (2009-03-15 15:50:00)Привет всем.
Может кто сталкивался хотя бы с подобной проблемой, мне нужно просто выгрузить всё из архива (с помощью WinRAR) в папку Temp делаю следуюшее:
procedure TForm1.Button1Click(Sender: TObject);
Var
parm, s: String;
begin
parm:='x 123.zip Temp\';
ShellExecute(1, nil, 'WinRAR', PansiChar(parm), nil, SW_NORMAL);
end;
Всё прекрасно работает но у меня на форме есть OpenDialog после того как воспользуюсь им путь к исходной папке теряется и выше упомянутый код не работает, сделал следуюшее:
S:= ExtractFilePath(Application.ExeName)+'Temp\';
parm:='x '+ ExtractFilePath(Application.ExeName)+'123.zip '+ S;
ShellExecute(1, nil, 'WinRAR', PansiChar(parm), nil, SW_NORMAL);
Но это по каким-то странным обстоятельством даже немного в глубоком дереве папок WinRar не видит файл только в первых каталогах диска (Например: C:\123.zip). Как мне быть с этой ситуацией?
AIK (2009-03-16 08:40:00) [1]
> (если путь содержит пробелы, они будут восприниматься как
> разделители параметров)
Ах да я даже неподумал обэтом, спасибо Павел
Так выглядит рабочий вариант:
S:= '"'+ExtractFilePath(Application.ExeName)+'Temp\"';
parm:='x "'+ ExtractFilePath(Application.ExeName)+'123.zip" '+ S;
ShellExecute(Handle, nil, 'WinRAR', PansiChar(parm), nil, SW_NORMAL);
И. Павел (2009-03-16 08:06:00) [2]ShellExecute(1, nil, 'WinRAR', PansiChar('"'+parm+'"'), nil, SW_NORMAL);
И. Павел (2009-03-16 08:04:00) [3]Заключите имя параметра в кавычки (если путь содержит пробелы, они будут восприниматься как разделители параметров)
AIK (2009-03-16 07:41:00) [4]
> Используй в программе полные пути.
S:= ExtractFilePath(Application.ExeName)+'Temp\';
parm:='x '+ ExtractFilePath(Application.ExeName)+'123.zip '+ S;
Так ведь объяснил же что WinRar не распознает длинные передаваемые параметры и поэтаму не всегда работает
Плохиш (2009-03-15 20:19:00) [5]Используй в программе полные пути.
AIK (2009-03-15 15:53:00) [6]
> ShellExecute( 1, nil, 'WinRAR', PansiChar(parm), nil, SW_NORMAL);
ShellExecute( Handle, nil, 'WinRAR', PansiChar(parm), nil, SW_NORMAL);
Эт я вспешке :)