Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Delphi 7 (http://forum.oszone.net/showthread.php?t=29348)

IM13 26-10-2004 16:38 203458

моя программа используется для групового архивирования и разар. файлов в разных дирректориях процедура архивации и разар. я взял из примера
Код:

Var
 * FilesCompressed: Integer;
Begin
 * Cursor := crHourGlass;
 * ListBox1.Clear();
 
 * If FileExists(Edit1.Text) Then
 * * *If MessageDlg(
 * * * * 'Archive exists... overwrite?',
 * * * * mtConfirmation,
 * * * * [mbYes, mbNo],
 * * * * 0) = mrYes Then
 * * * * // move to recycle bin
 * * * * EraseFile(Edit1.Text, doAllowUndo) // EraseFile is in ztvBase.pas
 * * *Else
 * * * * Exit;
 
 * Zip1.ArchiveFile := Edit1.Text; * * *// archive filename
 * Zip1.DateAttribute := daFileDate; * *// default value
 * Zip1.StoredDirNames := sdRelative; * // default value
 * Zip1.CompressMethod := cmDeflate; * *// default value
 * Zip1.RecurseDirs := CheckBox2.Checked; // default = False
 * Zip1.Switch := swAdd; * * * * * * * *// default value
 * Zip1.StoreEmptySubDirs := False; * * // default value
 * Zip1.EncryptHeaders := CheckBox1.Checked; // default = False
 
 * Zip1.ExcludeSpec.Clear();
 * Zip1.FileSpec.Clear();
 * Zip1.FileSpec.Add(Edit2.Text); * * * // test with c:\windows\*.txt
 
 * // ****************************************************************
 * // NOTE: for a better understanding of how the Attributes property
 * // works with file attributes see demo demos\filescan\fs_demo.dpr.
 * // ****************************************************************
 
 * // See the Attributes property in the object inspector
 * // Set Zip1 Attributes property by calling the SetAttribute method
 * Zip1.SetAttribute(fsZeroAttr, True); // default
 * Zip1.SetAttribute(fsArchive, True); *// default
 * Zip1.SetAttribute(fsDirectory, True); // default = False
 * Zip1.SetAttribute(fsHidden, True); * // default = False
 * Zip1.SetAttribute(fsReadOnly, True); // default
 * Zip1.SetAttribute(fsSysFile, True); *// default = False
 
 * // See the AttributesEx property in teh object inspector
 * // Set the AttributesEx property by calling the SetAttributeEx method.
 * // Exclude none
 * Zip1.SetAttributeEx(fsZeroAttr, False); // default
 * Zip1.SetAttributeEx(fsArchive, False); // default
 * Zip1.SetAttributeEx(fsDirectory, False); // default
 * Zip1.SetAttributeEx(fsHidden, False); // default
 * Zip1.SetAttributeEx(fsReadOnly, False); // default
 * Zip1.SetAttributeEx(fsSysFile, False); // default
 
 * FilesCompressed := Zip1.Compress();
 * ShowMessage('Files Compressed: ' + IntToStr(FilesCompressed));
 
 * Cursor := crDefault;
End;

на строке FilesCompressed := Zip1.Compress(); процесс автоматически переходит на
Код:

Procedure TForm1.Zip1Begin(Sender: TObject; FName: String; Count: Integer;
 * Var Extract: Boolean);
Begin
 * ListBox1.Items.Add(FName);
 * StatusBar1.SimpleText := FName;
End;

и выводит в listbox все файлы которые она сжимает, я сделал пости точную копию и вставил в свою прогу но у меня такого перехода не происходит - прога просто производит действия сжатия. Кто нибудь пояснит мне в чем проблема ?

[s]Исправлено: Prisoner, 2:27 27-10-2004[/s]

Prisoner 27-10-2004 02:36 203459

Так... стало быть программа должна переходить на Zip1Begin? Но этого не делдает? Я все верно понял? Если да, то было бы интересно взглянуть на реализацию метода Compress и узнать список компонентов на форме Form1.

IM13 27-10-2004 12:33 203460

Да вы поняли правильно в премере на использования метода архивации стоит точноя копия я изменяю только edit*.Text на нужные мне пути, которые передает другая процедура через поиск findfirst - findnext
прилагаю  свой From1

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
 Forms,  qdialogs,  Dialogs,   XPMan,   StdCtrls,    Buttons,  ztvRegister,   ztvBase,   ztvGbls,   ztvConsts,   ztvZip,   ztvMakeCab,   ztvUnZip,   ztvUnCab,
  ztvHeaders,   ztvFileIo,   ComCtrls,  // Gauges,
     ExtCtrls;

 type
 TForm1 = class(TForm)
   Edit1: TEdit;
   Edit2: TEdit;
   Edit3: TEdit;
   BitBtn1: TBitBtn;
   XPManifest1: TXPManifest;
   BitBtn2: TBitBtn;
   Zip1: TZip;
   UnZip1: TUnZip;
   Label1: TLabel;
   Edit4: TEdit;
   Label2: TLabel;
   Label3: TLabel;
   CheckBox2: TCheckBox;
   CheckBox1: TCheckBox;
   Label4: TLabel;
   ListBox1: TListBox;
   BitBtn3: TBitBtn;
   CheckBox3: TCheckBox;
   CheckBox4: TCheckBox;

это весь список компонентов я туда включил все что надо и не надо на счет метода compress в верху это он и есть,а алггоритм копрессии происходит через подключенные модули zip1: tzip.
Такой же переход на туже процедуру происходит и с процедурой декомпрессии

Prisoner 28-10-2004 02:43 203461

Хм... может это именно то, что надо (хотя странно, что ошибок нет) - в процедуре TForm1.Zip1Begin есть строки использующие ListBox1 и StatusBar1, но в объявлении формы их нет, что в большинстве случаев указывает, что их нет вообще. Самый первый кусок кода не может быть методом Compress - этот метод вызывается конце кода - рекурсия без выхода.


Время: 11:27.

Время: 11:27.
© OSzone.net 2001-