Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Zip - WriteSpan klaptt nicht! (https://www.delphipraxis.net/17918-zip-writespan-klaptt-nicht.html)

Imagination 11. Mär 2004 15:15


Zip - WriteSpan klaptt nicht!
 
Hi,
ich möchte Dateien in eine Zip-Datei schreiben. Die Zip-Datei soll ein Archiv mit 1MB großen Teilen (gesplittet) sein. Habe die Delphi Zip v1.73 installiert (auf BD6-Enterprise).http://www.geocities.com/rjpeters_au/zipmaster.html.
Ich möchte mit dieser Komponente weiter arbeiten und kann auch Dateien in eine Zip-Datei einfügen und auch adden. Mit dem Splitten klappt es aber leider nicht! Die Demo 6 habe ich mir schon die ganze Zeit angeschaut, aber ohne Erfolg!

Dort wird
Delphi-Quellcode:
ZipMaster1.WriteSpan( InFile, OutFile );
benutzt.

Wenn ich den Befehl einbaue kommt ein Fehler.

Auch wenn ich folgenden Code versuche, kommt der Fehler "ZipMaster [ 11007 ]"

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ZipMaster1: TZipMaster;
    Button3: TButton;
    ListBox1: TListBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 ZipMaster1.MaxVolumeSize :=10000;
 Zipmaster1.FSpecArgs.Clear;
 Zipmaster1.ZipFileName:='C:\test.zip';
 Zipmaster1.FSpecArgs.Add('C:\zipmaster.zip');
 Zipmaster1.AddOptions := [];
 Zipmaster1.AddOptions:= Zipmaster1.AddOptions + [AddDiskSpan];
 Zipmaster1.Add;

end;

procedure TForm1.Button3Click(Sender: TObject);
var
    IsOne: String;
begin
 ZipMaster1.MaxVolumeSize :=10000;
 Zipmaster1.AddOptions := Zipmaster1.AddOptions + [AddDiskSpan]; { we want diskspanning }
 Zipmaster1.FSpecArgs.Clear;
 Zipmaster1.FSpecArgs.Assign(Form1.ListBox1.Items); { specify filenames }
 Zipmaster1.FSpecArgs.Add('C:\zipmaster.zip');
 Try
  Zipmaster1.Add;
 Except
  ShowMessage('Error in Add; Fatal DLL Exception in mainunit');
 End;

 If Zipmaster1.SuccessCnt = 1 Then
  IsOne := ' was'
 Else
  IsOne := 's were';
 ShowMessage(IntToStr(Zipmaster1.SuccessCnt) + ' file' + IsOne + ' added');
end;

end.
Ich bin für jede Hilfe sehr dankbar!

Imagination 12. Mär 2004 11:38

Re: Zip - WriteSpan klaptt nicht!
 
Ein merkwürdiger Fehler...
Die Komponenete kann nach einigem Experimentieren seine eigenen org. Beispiele nicht mal mehr richtig ohne Fehler ausführen. Hab Delphi neu installiert und Komponente auch, aber WriteSpan der Demo klappt nicht. Hab jetzt TurboPower Abbrevia installiert und damit klappt es fast :?

Delphi-Quellcode:
unit Release;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, FileCtrl, ExtCtrls, ZipMstr, AbMeter, AbBase,
  AbBrowse, AbZBrows, AbZipper;

type
  TForm2 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    Panel7: TPanel;
    Panel8: TPanel;
    Panel9: TPanel;
    DriveComboBox1: TDriveComboBox;
    DirectoryListBox1: TDirectoryListBox;
    Button1: TButton;
    FileListBox1: TFileListBox;
    Bevel1: TBevel;
    Label1: TLabel;
    CheckBox1: TCheckBox;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Label2: TLabel;
    SelectedList: TListBox;
    Button6: TButton;
    SortBut: TButton;
    AbZipper1: TAbZipper;
    Panel10: TPanel;
    Label3: TLabel;
    AbMeter1: TAbMeter;
    OpenDialog1: TOpenDialog;
    AbVCLMeterLink1: TAbVCLMeterLink;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure SortButClick(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;
  newName : String;
  newUploader : String;
  newInfo : String;

implementation

uses Share;

{$R *.dfm}

procedure TForm2.Button5Click(Sender: TObject);
Var
    i: Integer;
begin
  mkdir(ExtractFilePath(ParamStr(0))+'Upload\'+newName);

   AbZipper1.FileName:=ExtractFilePath(ParamStr(0))+'Upload\'+newName+'\'+newName+'.zip'; // Erst einmal erstellen damit
   AbZipper1.AddFiles( SelectedList.Items[0], 0 ); // hineingeschrieben werden kann?
                                         // Sonst klappt es irgendwie nicht!

   AbZipper1.ZipfileComment:='Kommentar';

  For i := 0 To SelectedList.Items.Count-1 Do
  Begin
   AbZipper1.FileName:=ExtractFilePath(ParamStr(0))+'Upload\'+newName+'\'+newName+'.zip';
   AbZipper1.AddFiles( SelectedList.Items[i], 0 );
  End;

end;

end.
Aber es kommt eine Fehlermeldung "Zugriffsverletzung", wenn ich
Delphi-Quellcode:
AbZipper1.SpanningThreshold := 1000000; // entspr. ca. 1 MB
einfüge. Wenn ich das Zipfile öffne, ist aber alles in Ordnung.

Wie kann ich diese Fehlermeldung unterdrücken oder verbessern?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz