Форум: "Основная";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];
ВнизПроблема с архивированием каталога из собственной программы Найти похожие ветки
← →
Vasily_Ts (2003-09-26 20:45) [0]Уважаемые программеры!
Возникла проблема. Необходимо "сархивировать" каталог со всем содержимым из программы и впоследствии разархивировать в указанное место также из собственной программы. Нашел где-то dll, содержащую функции RAR"а. Все бы классно, но глючит под XP. Буду благодарен за ответ (помощь) по существу.
← →
Snap (2003-09-26 20:49) [1]Ты что же хочеш чтобы мы сами нашли твою длл, и посмотрели что не так?
← →
Vasily_Ts (2003-09-26 21:12) [2]Ну во-первых, я просил по существу...
Во-вторых, отнюдь не прошу смотреть "мою" dll.
В третьих, спрашиваю готовое решение или ссылку на готовое решение, или сбросьте на E-mail dll c описанием использования.
Не у меня же одного возникла такая необходимость
← →
dma (2003-09-26 21:34) [3]Плюнь на dll, возьми сам WinRAR упакуй AsPack`ом и пользуйся.
Screen.Cursor:=crHourGlass;
try
if FileExists(ExtractFilePath(Application.ExeName)+"Arc\winrar.exe") then
ExecuteFile(ExtractFilePath(Application.ExeName)+"Arc\winrar.exe"," u -dh -inul arccopy_"+DateToStr(now)+" ..\data\*.*",ExtractFilePath(Application.ExeName)+"\Arc\", SW_MINIMIZE)
else
MessageBox(Application.Handle, "Файл WinRar.exe не найден!"+#13+"Обратитесь к разработчику, e-mail: 1111@2222.ru","Ошибка", 4112);
except
Screen.Cursor:=crArrow;
ShowMessage("В ходе архивации произошла ошибка !!!")
end;
← →
dma (2003-09-26 21:37) [4]Забыл там еще FmxUtils.pas используется, поищи вместе с Delphi где-то валялся или поменяй ExecuteFile на ShellExecute или подобное. Да, самое интересное, что при этом подходе кроме winrar.exe не нужны никакие другие файлы. Надеюсь это тебе пригодиться.
← →
Pat (2003-09-26 23:04) [5]uses zlib
И никаких лишних файлов
← →
Vasily_Ts (2003-09-27 00:08) [6]=> dma
Спасибо. А разархивировать как?
=> Pat
И где найти описание как пользоваться zlib
← →
Zergling (2003-09-27 06:32) [7]Vasily_Ts (27.09.03 00:08) [6]
=> dma
Спасибо. А разархивировать как?
Открой Help k WinRar и прочитай о ключах запуска программы
← →
Anatoly Podgoretsky (2003-09-27 11:58) [8]Vasily_Ts (26.09.03 21:12) [2]
А чего ты обижаешься, если ты даже вопроса не задал, а выложил жалобу, что у тебя какая то длл не работает, тебе по существу и ответили, а вот остальное все не посуществу, а по другим продуктам.
← →
Vasily_Ts (2003-09-27 16:03) [9]=> Anatoly Podgoretsky
Я не обижаюсь в принципе никогда и ни на кого. По крайней мере стараюсь.
Я обрисовал проблему, которая заключается в том, что мне нужно заархивировать папку со всем содержащемся в ней. А затем ее разархивировать в указанное место. Желательно, чтобы это выполнялось из моей программы. А спрашивал я: может есть у кого готовое решение. Хотя, вынужден признать, что не указал эту просьбу явным образом.
Если Вы посмотрите на мой первый вопрос, то там и слова нет о том, что-бы кто-нибудь "копался" в моей "неработающей" и, тем более, не представленной "длл".
← →
Song (2003-09-27 16:12) [10]
Procedure CrProcess(FileName, S, Dir, WindowName: String);
Var SeInfo:TShellExecuteInfo;
ExitCode: DWord;
Begin
FillChar(SEInfo,SizeOf(SEInfo),0);
With SEInfo Do
Begin
cbSize:=SizeOf(TShellExecuteInfo);
fmask:=SEE_MASK_NOCLOSEPROCESS;
Wnd:=Application.Handle;
lpFile:=PChar("""+FileName+""");
lpParameters:=PChar(S);
lpDirectory:=nil;
nShow:=SW_HIDE;
End;
IF ShellExecuteEx(@SEInfo) then
Repeat
Application.ProcessMessages;
GetExitCodeProcess(SEInfo.hProcess,ExitCode);
Until (FindWindow(nil,PChar(WindowName))<>0) or
(ExitCode<>STILL_ACTIVE) or (Application.Terminated) else
Begin
ProgressForm.Close;
Assert(False);
MessageDlg("Ошибка создания внешнего процесса. Код ошибки: "+SysErrorMessage(ExitCode)+". Модуль ZakazCardUnit x "+IntToStr(SysUtils.ErrorNumber),mtError,[mbAbort],0);
End;
CloseHandle(SEInfo.hProcess);
IF FindWindow(nil,PChar(WindowName))<>0 then
Begin
SendMessage(FindWindow(nil,PChar(WindowName)),WM_CLOSE,0,0);
While FindWindow(nil,PChar(WindowName))<>0 Do Application.ProcessMessages;
End;
End;
// заархиировать
CrProcess("путь_к_архиваору_rar","a -r0 -m5 "+"имя_архива"+#32+"имя_каталога"+"*.*",TempPath,"(Сеанс завершен) - Rar");
// разархивировать
CrProcess("путь_к_архиваору_rar","x -y "+"имя_архива"+#32+"каталог_куда_разархивировать","(Сеанс завершен) - Rar");
Вообшем лишнее вырежешь.
← →
Pat (2003-09-27 23:49) [11]>И где найти описание как пользоваться zlib
На диске с Делфи есть файл zlib.pas. Посмотри секцию interface. Там все подробно описано
← →
Amoeba (2003-09-29 15:46) [12]Скачай бесплатную библиотеку ZipForge
http://www.componentace.com
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c