Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Теряется путь от исполняемой папки


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);
Эт я вспешке    :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо