Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.09;
Скачать: CL | DM;

Вниз

Проблема с архивированием каталога из собственной программы   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
3-27414
NAlexey
2003-09-18 08:53
2003.10.09
Interbase 5.0 - missing registry


14-27659
Санек
2003-09-23 09:55
2003.10.09
Что будет правильнее?


1-27511
xGhost
2003-09-26 14:33
2003.10.09
Как можно причитать текст в определёном заголовке ?


1-27538
Jiura32d
2003-09-29 21:22
2003.10.09
Как узнать в Treeview Index выделенного эллемента?


1-27598
diww
2003-09-30 12:54
2003.10.09
Как удалить из файла N символов начиная с I?