Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.02.2015, 11:02
rzawm rzawm вне форума
Прохожий
 
Регистрация: 08.02.2015
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию ZipForge нужна помощь

Всем доброго времени суток!
Уважаемые комрады, требуется помощ, ответ думаю элементарен, но никак я сам его не найду.
Суть вопроса
Есть форма, на форме TMemo, TButton, TSaveDialog, TZipForge.
В процессе работы приложения Memo заполняется различными данными и в некоторый момент времени нам надо щелкнув Button содержимое Memo сохранить в zip архив, задав имя архива через savedialog. Сам архив и архивировируемый файл должный иметь одно и тоже имя, взятое из savedialog, архивируемый файли должен лежать в корне полученного архива, без каких либо папок.
пример:
щелкнули по button вышел savedialog, в нем указали имя например 945 и решили сохранить например на рабочем столе, в итоге у нас должен полчуится zip архив на рабочем столе 945.zip а в нем файлик 945.txt без каких либо папок.

Уважаемые, очень надо! Буду очень благодарен!
Ответить с цитированием
  #2  
Старый 08.02.2015, 15:55
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Используй gzip. Там вообще нет понятия имени файла в архиве.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 08.02.2015, 16:22
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Ну или вот адаптированный кусок из демки к данному пакету
Код:
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  
Старый 08.02.2015, 17:58
rzawm rzawm вне форума
Прохожий
 
Регистрация: 08.02.2015
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

M.A.D.M.A.N., мне не приницпиально что использовать, с zip архивами вобще не работал никогда. можно и gzip
Ответить с цитированием
  #5  
Старый 08.02.2015, 18:00
rzawm rzawm вне форума
Прохожий
 
Регистрация: 08.02.2015
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Alegun, спасибо попробую
Ответить с цитированием
  #6  
Старый 08.02.2015, 23:28
rzawm rzawm вне форума
Прохожий
 
Регистрация: 08.02.2015
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Alegun, не получилось, ругается вот на это AddFromFile(fn);
Ответить с цитированием
  #7  
Старый 08.02.2015, 23:32
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Мне не удалось под D7 поставить этот пакет, не знаю почему, брал код из примеров, интуитивно. Какая ошибка?
Ответить с цитированием
  #8  
Старый 08.02.2015, 23:38
rzawm rzawm вне форума
Прохожий
 
Регистрация: 08.02.2015
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

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  
Старый 08.02.2015, 23:54
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Будьте любезны, пжлст, версию вашего ZF опубликуйте, - установить доступный не удаётся, имеется 2.66, по-ходу очень старый, наверное
Ответить с цитированием
  #10  
Старый 09.02.2015, 00:13
rzawm rzawm вне форума
Прохожий
 
Регистрация: 08.02.2015
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 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  
Старый 09.02.2015, 14:26
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Значит проблема с путями, с их прописью, вот кусман из официального сырца от производителя
Код:
...
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;
должно работать
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:09.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter