![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не получаетс разархивировать из Delphi [D7, WinXP]
ambhtr © (2007-05-08 16:17:00)Не получаетс разархивировать из Delphi.
Делаю следующее:
var
strarj : String;
A: array[0..200] of Char;
begin
//nmFileFull - имя, с полным путем, архива.
strarj := 'WinRAR e '+nmFileFull;
WinExec(StrPCopy(A,strarj), SW_SHOWNORMAL);
Компиллируется без ошибок. Выполняется тоже без ошибок.
Но! Ничего не делается. Архив остается не распакован.
Пробовал и так:
// WinExec('WinRAR e 35000025.rar 1\',1);
Не получается :о(
Если набираю в Far-e:
WinRAR e 35000025.rar 1\
Все работает, а из "Delphi" - нет.
Подскажите...
PZ (2007-05-10 15:16:00) [1]А я делал BAt-файл:
erase *.bak
erase *.tmp
erase *.dcu
erase *.ddp
erase *.~*
erase ~*.*
erase *.err
copy c:\"Program Files"\WinRAR\Winrar.exe Winrar.exe
WinRAR.exe -r u -x*.tmp -x~*.* -x*.zip -xWinrar.exe -x*.arj -x*.rar -x*.dcu SokoBan.rar *.*
Pause
erase Winrar.exe
или другой вариант:
procedure TForm1.FormActivate(Sender: TObject);
Var
S : String;
Params : String;
begin
S := ParamStr(1);
If S = '' then
S := 'Arxiv.rar'
else
begin
S := ParamStr(1);
S := ChangeFileExt(S, '.rar');
end;
RemoveFiles; // здесь удаляю *.tmp *.dcu и т. д.
GetDir(0, cDir); // получить имя текущего каталога
if cDir[length(cDir)] <> '\' then cDir := cDir+'\';
Params := '-r u -x*.zip -x*.arj -x*.rar '+S+' *.*';
ShellExecute(Handle, Nil, 'WinRar.exe', pChar(Params), pChar(cDir), SW_SHOWNORMAL);
end; { TForm1.FormActivate }
Virgo_Style (2007-05-10 12:47:00) [2]Desdechado © (10.05.07 12:46) [8]
папку с прогой мне винрар 100 лет не нужен
...и если в любую другую - тоже?
Desdechado (2007-05-10 12:46:00) [3]А если у меня PrоgramFiles не на C, а в папку с прогой мне винрар 100 лет не нужен?
ambhtr (2007-05-10 11:02:00) [4]Всем спасибо за участие. Заработало в следующем виде:
WinExec('C:\Program Files\WinRar\WinRar.exe e 35000025.rar 1\',1);
так же получилось и
WinExec('WinRar.exe e 35000025.rar 1\',1);
если переместить WinRar.exe в папку с прогой.
Так что, еще раз всем СПАСИБО!
lkan (2007-05-09 17:53:00) [5]наверное, в папку с прогой надо положить винрар.ехе
Германн (2007-05-09 01:47:00) [6]
> DrPass © (09.05.07 00:57) [4]
>
> ...и какой результат возвращает сама WinExec?
>
Скорее всего автор и не знает, что WinExec - функция. :(
DrPass (2007-05-09 00:57:00) [7]...и какой результат возвращает сама WinExec?
TStas (2007-05-09 00:32:00) [8]А сам файл не лежит ли в папке "Мои документы"? Тогда, поскольку есть пробел, путь к нему надо в кавычки взять
ambhtr (2007-05-08 16:40:00) [9]Пробовал и так и этак. Если ошибка с путем в Far-e, то WinRar выдает сообщение об ошибке. Но в том-то и дело, что я уже записывал командную строку, которая в Far-e дает результат. Эта же строка из Delphi проскакивает насквозь. и без результата.
Desdechado (2007-05-08 16:29:00) [10]наверно, текущий путь не тот, не содержит архива