Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
14-27694
Кен
2003-09-22 07:14
2003.10.09
А есть ли компоненты или Open Source проэкты которые могли бы


1-27587
xGhost
2003-09-29 13:09
2003.10.09
Программа не выключаеться при попытки перезагрузить компьютер :(


14-27745
nika_ufc
2003-09-19 18:06
2003.10.09
надоел этот английский , помогите :(


1-27451
Max2003
2003-09-26 19:39
2003.10.09
точка или запятая


3-27399
Delf
2003-09-18 12:20
2003.10.09
Update после Insert в TClientDataset





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский