![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Всем доброго времени суток!
Уважаемые комрады, требуется помощ, ответ думаю элементарен, но никак я сам его не найду. Суть вопроса Есть форма, на форме TMemo, TButton, TSaveDialog, TZipForge. В процессе работы приложения Memo заполняется различными данными и в некоторый момент времени нам надо щелкнув Button содержимое Memo сохранить в zip архив, задав имя архива через savedialog. Сам архив и архивировируемый файл должный иметь одно и тоже имя, взятое из savedialog, архивируемый файли должен лежать в корне полученного архива, без каких либо папок. пример: щелкнули по button вышел savedialog, в нем указали имя например 945 и решили сохранить например на рабочем столе, в итоге у нас должен полчуится zip архив на рабочем столе 945.zip а в нем файлик 945.txt без каких либо папок. Уважаемые, очень надо! Буду очень благодарен! |
|
#2
|
||||
|
||||
|
Используй gzip. Там вообще нет понятия имени файла в архиве.
|
|
#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; |