Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> VCLZip и ZipForge 
:(
    Опции темы
Zlo
Дата 13.3.2005, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.9.2004

Репутация: 1
Всего: 1



Такс компонентами я обзавелся! А если быть точнее то двумя: VCLZip и ZipForge!
Ктонибудь сталкивался с ними?
Мне надо заархивировать папку с вложенными папками, но как сделать это не понимаю.
Помогите!
PM MAIL   Вверх
RA
Дата 13.3.2005, 03:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 14
Всего: 115



ZipForge на много превосходит все аналоги, более того он предоставляет больше возможностей чем, сам архиватор WinZip

Код


ZipForge.FileName := 'c:\test.zip';
ZipForge.OpenArchive(fmCreate);
ZipForge.AddFiles('C:\myDir\'); //Вся папка со всеми вложениями будет в архиве
ZipForge.CloseArchive;



PM   Вверх
Zlo
Дата 13.3.2005, 04:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.9.2004

Репутация: 1
Всего: 1



RAdmin
Неполучается... smile



А нигде нет описалова на русском к этим компонентам?
PM MAIL   Вверх
Snowy
Дата 13.3.2005, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



FindFirst, FindNext по каталогам.
Все файлы заносишь в список с относительными путями.
список грузишь, например в VCLZip и пакуешь.
Всё.
PM MAIL   Вверх
Zlo
Дата 13.3.2005, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.9.2004

Репутация: 1
Всего: 1



Snowy
А можно с примерчиком? smile
PM MAIL   Вверх
Snowy
Дата 13.3.2005, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Создай форму, кинь на нее батон.
Для примера, здесь запаковывается папка test со всеми подкаталогами.
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, VCLZip;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  zip:   TVCLZip;  // объект для простоты делаю глобальным

implementation

{$R *.dfm}

Procedure AddDir(Dir:string); // добавить каталог со всеми файлами в список
var
  SearchRec:TSearchRec;
begin
 if Dir<>'' then if Dir[length(Dir)]<>'\' then Dir:=Dir+'\';
 if FindFirst(Dir+'*.*', faAnyFile, SearchRec)=0 then
 repeat
   if (SearchRec.name='.') or (SearchRec.name='..') then continue;
   if (SearchRec.Attr and faDirectory)<>0 then
     AddDir(Dir+SearchRec.name)
   else
   zip.FilesList.Add(Dir+SearchRec.name);
 until FindNext(SearchRec)<>0;
 FindClose(SearchRec);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  zip:=TVCLZip.Create(Form1); // создаем объект
  zip.PackLevel:=9; // уровень компрессии - максимальный
  zip.ZipName:='pkunzip.zip'; // имя архива
  zip.StorePaths:=true; // говорим, чтобы сохранял с полными путями
  AddDir('test'); // добавить в список каталок test со всеми подкаталогами
  zip.Zip; // пакуем
  zip.Free; // уничтожаем объект
end;

end.


Это сообщение отредактировал(а) Snowy - 13.3.2005, 15:31
PM MAIL   Вверх
RA
Дата 13.3.2005, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 14
Всего: 115



Цитата(Zlo @ 13.3.2005, 04:17)
Неполучается...


Что именно не Неполучается ?
PM   Вверх
RA
Дата 13.3.2005, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 14
Всего: 115



Есть вероятность что ты в опциях нахимич, поэтому чтоб не описывать каждую в отдельности выкладываЮ пример ->

Это сообщение отредактировал(а) RAdmin - 13.3.2005, 20:45

Присоединённый файл ( Кол-во скачиваний: 61 )
Присоединённый файл  ZF.rar
PM   Вверх
Zlo
Дата 15.3.2005, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.9.2004

Репутация: 1
Всего: 1



Snowy
Спасибо, твой пример оччень помог!
Но народ всеравно ничего не архивируется, создается архив размером в 22кб пустой.
посмотрите плиз код проги чего там не так?
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ComCtrls, StdCtrls, Buttons, ShellAPI,VCLZip;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    N1: TMenuItem;
    Exit1: TMenuItem;
    Help1: TMenuItem;
    Abut1: TMenuItem;
    www1: TMenuItem;
    GroupBox1: TGroupBox;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    StatusBar1: TStatusBar;
    ListView1: TListView;
    OpenDialog1: TOpenDialog;
    BitBtn3: TBitBtn;
    CheckBox1: TCheckBox;
    Label1: TLabel;
    Edit1: TEdit;
    ProgressBar1: TProgressBar;
    Label2: TLabel;
    Edit3: TEdit;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure Jar1Progress(Sender: TObject; ProgressByFile,
      ProgressByArchive: Byte);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  zip:   TVCLZip;

implementation

{$R *.dfm}

Procedure AddDir(Dir:string); // äîáàâèòü êàòàëîã ñî âñåìè ôàéëàìè â ñïèñîê
var
  SearchRec:TSearchRec;
begin
 if Dir<>'' then if Dir[length(Dir)]<>'\' then Dir:=Dir+'\';
 if FindFirst(Dir+'*.*', faAnyFile, SearchRec)=0 then
 repeat
   if (SearchRec.name='.') or (SearchRec.name='..') then continue;
   if (SearchRec.Attr and faDirectory)<>0 then
     AddDir(Dir+SearchRec.name)
   else
   zip.FilesList.Add(Dir+SearchRec.name);
 until FindNext(SearchRec)<>0;
 FindClose(SearchRec);
end;


function GetFileSize(FileName: String): Integer;
var
  FS: TFileStream;
begin
  try
    FS := TFileStream.Create(Filename, fmOpenRead);
  except
    Result := -1;
  end;
  if Result <> -1 then Result := FS.Size;
  FS.Free;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var s:integer;
begin
OpenDialog1.Execute;
if Length(OpenDialog1.FileName)>0 then begin
s:=ListView1.Items.Count;
ListView1.Items.Add;
ListView1.Items.Item[s].SubItems.Add(OpenDialog1.FileName);
ListView1.Items.Item[s].SubItems.Add(FloatToStr(GetFileSize(OpenDialog1.FileName)));
Edit1.Text:=IntToStr(StrToInt(Edit1.Text)+(GetFileSize(OpenDialog1.FileName) div 1024));
end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var bit:string;
begin
bit:=Copy(ListView1.Items.Item[ListView1.Selected.Index].SubItems.DelimitedText,Pos(',',ListView1.Items.Item[ListView1.Selected.Index].SubItems.DelimitedText)+1,Length(ListView1.Items.Item[ListView1.Selected.Index].SubItems.DelimitedText)-Pos(',',ListView1.Items.Item[ListView1.Selected.Index].SubItems.DelimitedText)+1);
Edit1.Text:=IntToStr(StrToInt(Edit1.Text)-(StrToInt(bit) div 1024));
ListView1.Selected.Delete;
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
var
   book,Zbook,Arxiv,jadf:TStringList;
   Pyt,Bit,Dir,BName:String;
   i,j:integer;
begin
    book:=TStringList.Create;//Îáúåêò äëÿ ñîõðàíåíèÿ êíèã
    Zbook:=TStringList.Create;//çàãëàâíûé ôàéë
    Arxiv:=TStringList.Create;//Ñïèñîê àðõèâèðóåìûõ ôàéëîâ
    Pyt:={GetCurrentDir;}ExtractFilePath(Application.ExeName);//Ïóòü ê ïàïêå ñ ïðîãðàììîé!
    if CheckBox1.Checked=true then begin
      book.LoadFromFile(Pyt+'help.txt');
      book.SaveToFile(Pyt+'\books\help.txt');
      ZBook.Add('help.txt|Help|6061');
    end;
    for i:=0 to ListView1.Items.Count-1 do begin
      bit:=Copy(ListView1.Items.Item[i].SubItems.DelimitedText,Pos(',',ListView1.Items.Item[i].SubItems.DelimitedText)+1,Length(ListView1.Items.Item[i].SubItems.DelimitedText)-Pos(',',ListView1.Items.Item[i].SubItems.DelimitedText)+1);
      Dir:=Copy(ListView1.Items.Item[i].SubItems.DelimitedText,2,Length(ListView1.Items.Item[i].SubItems.DelimitedText)-(Length(Bit)+3));
      BName:=Copy(Dir,LastDeLimiter('\',Dir)+1,Length(Dir)-LastDeLimiter('\',Dir));
      ZBook.Add('book'+IntToStr(i)+'.txt|'+BName+'|'+Bit);
      book.LoadFromFile(dir);
      book.SaveToFile(Pyt+'\books\book'+IntToStr(i)+'.txt');
    end;
ZBook.SaveToFile(Pyt+'\books\_books.txt');
book.Free;
Zbook.Free;
Arxiv.LoadFromFile(Pyt+'\Files.t');
{:::::::::::::::::::::::::::::::}
//Ñîçäàíèå àðõèâà!
  zip:=TVCLZip.Create(Form1); // ñîçäàåì îáúåêò
  //zip.PackLevel:=9; // óðîâåíü êîìïðåññèè - ìàêñèìàëüíûé
  zip.ZipName:=Pyt+'\'+Edit3.Text+'.zip'; // èìÿ àðõèâà
  zip.StorePaths:=true; // ãîâîðèì, ÷òîáû ñîõðàíÿë ñ ïîëíûìè ïóòÿìè
  AddDir('META-INF'); // äîáàâèòü â ñïèñîê êàòàëîê test ñî âñåìè ïîäêàòàëîãàìè
  AddDir('icons');
  AddDir('fonts');
  AddDir('books');
  zip.FilesList.AddStrings(Arxiv);
  zip.Zip; // ïàêóåì
  zip.Free; // óíè÷òîæàåì îáúåêò

{:::::::::::::::::::::::::::::::}
jadf:=TStringList.Create;
jadf.Add('MIDlet-Name: Bookmobile');
jadf.Add('MIDlet-1: Bookmobile, /icons/icon.png, Bookmobile');
jadf.Add('MIDlet-Icon: /icons/icon.png');
jadf.Add('MIDlet-Version: 1.1.6');
jadf.Add('MIDlet-Vendor: Zlo');
jadf.Add('MicroEdition-Configuration: CLDC-1.0');
jadf.Add('MicroEdition-Profile: MIDP-1.0');
jadf.Add('MIDlet-Description: User friendly book reader');
jadf.Add('MIDlet-Jar-URL: '+Edit3.Text+'.jar');
jadf.Add('MIDlet-Jar-Size: '+IntToStr(GetFileSize(pyt+'\'+Edit3.Text+'.zip')));
jadf.Add('');
jadf.Add('');

Arxiv.Free;
jadf.Free;
end;

end.

PM MAIL   Вверх
Snowy
Дата 16.3.2005, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Смени текущий каталог на Pyt.
Архиватору ты указал в каком каталоге создавать архив.
Но для того, чтобы каталоги добавлялись нужно еще изменить текущий каталог, либо указывать абсолютные пути. Второе нежелательно.
Поэтому перед AddDir сделай ChDir(Pyt);
PM MAIL   Вверх
Snowy
Дата 16.3.2005, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Zlo @ 15.3.2005, 18:35)
OpenDialog1.Execute;
if Length(OpenDialog1.FileName)>0 then begin

Код
if OpenDialog1.Execute then begin


Цитата(Snowy @ 16.3.2005, 08:36)
bit:=Copy(ListView1.Items.Item[ListView1.Selected.Index].SubItems.DelimitedText,Pos(',',ListView1.Items.I..............

Тебе самому-то удобно работать с такими конструкциями?
Тихий ужас. 321 символ в строке...
Код

bit:=ListView1.Items.Item[ListView1.Selected.Index].SubItems.DelimitedText;
bit:=Copy(bit,Pos(',',bit)+1,Length(bit));

PM MAIL   Вверх
Zlo
Дата 16.3.2005, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.9.2004

Репутация: 1
Всего: 1



Snowy
Спасибо тебе большое!!!


Цитата(Snowy @ 16.3.2005, 08:47)
if OpenDialog1.Execute then begin


Приму к сведению!!! smile

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0929 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.