Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Rar и Delphi pack/unpack


Автор: Sanek123 16.12.2009, 13:29
Здравствуйте!
Нашел в сети:
Код

function ExecAndWait(const FileName, Params: string; 
  WindowState: Word): Boolean; 
var
  SUInfo: TStartupInfo; 
  ProcInfo: TProcessInformation; 
  CmdLine: string; 
begin 

  CmdLine := '"' + FileName + '"' + Params; 
  FillChar(SUInfo, SizeOf(SUInfo), #0); 
  with SUInfo do 
  begin 
    cb := SizeOf(SUInfo); 
    dwFlags := STARTF_USESHOWWINDOW; 
    wShowWindow := WindowState; 
  end; 
  Result := CreateProcess(nil, PChar(CmdLine), nil, nil, False,
    CREATE_NEW_CONSOLE or
    NORMAL_PRIORITY_CLASS, nil, 
    PChar(ExtractFilePath(FileName)), 
    SUInfo, ProcInfo); 
  
  if Result then
    WaitForSingleObject(ProcInfo.hProcess, INFINITE);
end; 


при абсолютных адресах работает:
Код

ExecAndWait('C:\Rar.exe','a -m5 123.rar C:\123.txt',SW_SHOW);


если адрес вычисляется - не работает:
Код

ExecAndWait(GetCurrentDir+'\Rar.exe','a -m5' + GetCurrentDir+'\ExportDBFile.rar'+ GetCurrentDir+'\123.txt',SW_SHOW);



Подскажите в чем дело?

Автор: Amphiluke 16.12.2009, 13:57
Видимо, пробелов не хватает…
Код

ExecAndWait(GetCurrentDir+'\Rar.exe','a -m5 ' + GetCurrentDir+'\ExportDBFile.rar '+ GetCurrentDir+'\123.txt',SW_SHOW);


Добавлено через 3 минуты
Кстати, не забывайте про CloseHandle.

Автор: SlaUr 21.12.2009, 09:41
GetCurrentDir - скорее всего вы находитесь не в той папке где лежит rar 
Если вы распакокывайте файл в папке откуда стартовала прога то лучше используйте 
ExtractFileDir(paramstr(0)) кстати в свое время я тоже пробовал для распаковки/упаковки rar.exe но заметил что у него с кирилицей не совсем хорошо ,поэтому лучше пользовать winrar.exe (опции коммандной строки тоже понимает) и насколько я помню он упаковывал если находится в корне упаковываемой папки (после упаковки я его удалял из корня)

Автор: Akella 21.12.2009, 10:37
Цитата(Sanek123 @  16.12.2009,  13:29 Найти цитируемый пост)
если адрес вычисляется

а как ты вычисляешь адрес?

Добавлено через 37 секунд
Цитата(Sanek123 @  16.12.2009,  13:29 Найти цитируемый пост)
GetCurrentDir

Ты хоть посмотрел при дебаге, что возвращает GetCurrentDir? А справку по GetCurrentDir читал?

Добавлено через 1 минуту и 2 секунды
Цитата(Sanek123 @  16.12.2009,  13:29 Найти цитируемый пост)
Нашел в сети:

это мой код smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)