|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
ZipForge нужна помощь
Всем доброго времени суток!
Уважаемые комрады, требуется помощ, ответ думаю элементарен, но никак я сам его не найду. Суть вопроса Есть форма, на форме TMemo, TButton, TSaveDialog, TZipForge. В процессе работы приложения Memo заполняется различными данными и в некоторый момент времени нам надо щелкнув Button содержимое Memo сохранить в zip архив, задав имя архива через savedialog. Сам архив и архивировируемый файл должный иметь одно и тоже имя, взятое из savedialog, архивируемый файли должен лежать в корне полученного архива, без каких либо папок. пример: щелкнули по button вышел savedialog, в нем указали имя например 945 и решили сохранить например на рабочем столе, в итоге у нас должен полчуится zip архив на рабочем столе 945.zip а в нем файлик 945.txt без каких либо папок. Уважаемые, очень надо! Буду очень благодарен! |
#2
|
||||
|
||||
Используй gzip. Там вообще нет понятия имени файла в архиве.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
||||
|
||||
Ну или вот адаптированный кусок из демки к данному пакету
Код:
uses ZipForge; ... var fn: string; begin if SaveDialog1.Execute do begin fn:= ChangeFileExt(ExtractFileName(SaveDialog1.FileName), 'txt'); Memo1.Lines.SaveToFile(fn); with TZipForge.Create(nil) do begin FileName:= SaveDialog1.FileName; OpenArchive(fmCreate); AddFromFile(fn); CloseArchive; Free; end; DeleteFile(fn); end; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
rzawm (08.02.2015)
|
#4
|
|||
|
|||
M.A.D.M.A.N., мне не приницпиально что использовать, с zip архивами вобще не работал никогда. можно и gzip
|
#5
|
|||
|
|||
Alegun, спасибо попробую
|
#6
|
|||
|
|||
Alegun, не получилось, ругается вот на это AddFromFile(fn);
|
#7
|
||||
|
||||
Мне не удалось под D7 поставить этот пакет, не знаю почему, брал код из примеров, интуитивно. Какая ошибка?
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#8
|
|||
|
|||
Alegun, он под разные версии делфи свой.
Ошибка вот "[dcc32 Error] Unit1.pas(206): E2003 Undeclared identifier: 'AddFromFile'" Перед этой ошибкой ещё были поправил, код сейчас такой Код:
procedure TForm1.Button11Click(Sender: TObject); var fn: string; begin with SaveDialog3, Memo3 do if Execute then begin fn:= ChangeFileExt(ExtractFileName(SaveDialog3.FileName), 'txt'); Memo3.Lines.SaveToFile(fn); with TZipForge.Create(nil) do begin FileName:= SaveDialog3.FileName; OpenArchive(fmCreate); AddFromFile(fn); CloseArchive; Free; end; DeleteFile(fn); end; end; |
#9
|
||||
|
||||
Будьте любезны, пжлст, версию вашего ZF опубликуйте, - установить доступный не удаётся, имеется 2.66, по-ходу очень старый, наверное
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#10
|
|||
|
|||
Использовал вот такой код
Код:
procedure TForm1.Button11Click(Sender: TObject); var TempPath,TempFileName: String; i: Integer; begin if SaveDialog3.Execute then begin SetLength(TempPath,MAX_PATH); i:=GetTempPath(Length(TempPath),PChar(TempPath)); SetLength(TempPath,i); SetLength(TempFileName,MAX_PATH); i:=GetTempFileName(PChar(TempPath),'myf',0,PChar(TempFileName)); SetLength(TempFileName,i); TempFileName:=TempFileName+'.txt'; try Memo3.Lines.SaveToFile(TempFileName); except ShowMessage('Ошибка выгрузки из memo'); Exit; end; try try ZipForge1.FileName:=Savedialog3.FileName; ZipForge1.OpenArchive(fmcreate); ZipForge1.AddFiles(TempFileName); ZipForge1.CloseArchive(); except ShowMessage('Ошибка создания архива'); Exit; end; finally DeleteFile(TempFileName); end; end; end; С первого взгляда все получилось, щелкаю кнопочку, появляется диалог сохранения, указываю путь, все создается по указанному пути zip файл, но вот содержимое запрятанно в кучу папок, и имя содержимого не то что я указа в savedialog и расширенне тоже не то, открыл содержимое блокнотом, содержимое из моего memo подробнее на скрине в savedialog я указал имя 963, архив создался 963.zip что верно, но дальше пошла куча папок и содержимое не с тем именем и расширением, а должно было быть в корне 963.zip и зваться 963.txt с содержимым из мемо |
#11
|
||||
|
||||
Значит проблема с путями, с их прописью, вот кусман из официального сырца от производителя
Код:
... var archiver : TZipForge; begin // Create an instance of the TZipForge class archiver := TZipForge.Create(nil); with archiver do begin // Set the name of the archive file we want to create FileName := 'C:\test.zip'; // Because we create a new archive, // we set Mode to fmCreate OpenArchive(fmCreate); // Set base (default) directory for all archive operations BaseDir := 'C:\'; // Add file C:\test.txt the archive; wildcards can be used as well AddFiles('c:\test.txt'); CloseArchive(); end; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |