Difference between revisions of "Zlibar/de"

From Free Pascal wiki
Jump to navigationJump to search
m (Spelling, wording)
m (added category; formatting; typos; one difference in the code compared to english version)
Line 10: Line 10:
 
Features von TZlibWriteArchive :
 
Features von TZlibWriteArchive :
  
* Erzeugt das Archiv in einem Datenstrom, erlaubt ihnen es in eine Datei zu speichern oder etwas anderes kreatives damit zu machen
+
* Erzeugt das Archiv in einem Datenstrom. Das erlaubt Ihnen, es in eine Datei zu speichern oder etwas anderes kreatives damit zu machen
 
* Jede Datei im Archiv wird mit einer MD5 Prüfsumme abgelegt
 
* Jede Datei im Archiv wird mit einer MD5 Prüfsumme abgelegt
 
* Jede Datei kann mit einem relativem Pfad abgelegt werden
 
* Jede Datei kann mit einem relativem Pfad abgelegt werden
Line 35: Line 35:
 
0.2.1
 
0.2.1
  
* Archive sollten jetzt funktionieren über Maschinen mit verschieden Bytefolgen (endian) hinweg.
+
* Archive sollten jetzt funktionieren über Maschinen mit verschiedenen Bytefolgen (endian) hinweg.
 
* Berichtigter bad memory corruption Bug
 
* Berichtigter bad memory corruption Bug
 
* Benötigt jetzt die LCL für endian Sicherheit
 
* Benötigt jetzt die LCL für endian Sicherheit
Line 58: Line 58:
  
 
=== Verwendung ===
 
=== Verwendung ===
Fügen sie die Unit "zlibar" zu ihrem Abschnitt "uses" hinzu.
+
Fügen Sie die Unit "zlibar" zu Ihrem Abschnitt "uses" hinzu.
 +
 
 
==== TZLibWriteArchive ====
 
==== TZLibWriteArchive ====
 
Beispiel:
 
Beispiel:
  
  var
+
<delphi>var
 
   Zar: TZlibWriteArchive;
 
   Zar: TZlibWriteArchive;
 
   Stream: TMemoryStream;
 
   Stream: TMemoryStream;
 
   X: Integer;
 
   X: Integer;
  begin     
+
begin     
    Stream := TMemoryStream.Create;
+
  Stream := TMemoryStream.Create;
    Zar := TZlibWriteArchive.Create;     
+
  Zar := TZlibWriteArchive.Create;     
    Zar.OutStream := Stream;
+
  Zar.OutStream := Stream;
    
+
 
    Zar.InputFiles.Add('/Pfad/zu/MyFileName1');
+
   Zar.InputFiles.Add('/Pfad/zu/MyFileName1');
    Zar.InputFiles.Add('/Pfad/zu/MyFileName2');
+
  Zar.InputFiles.Add('/Pfad/zu/MyFileName2');
    
+
 
    Zar.CreateArchive;
+
   Zar.CreateArchive;
    
+
 
    Stream.SaveToFile('MySavedFileName');
+
   Stream.SaveToFile('MySavedFileName');
    Zar.Free;
+
  Zar.Free;
    Stream.Free;
+
  Stream.Free;
  end;
+
end;</delphi>
  
 
==== TZlibReadArchive ====
 
==== TZlibReadArchive ====
 
Beispiel:  
 
Beispiel:  
  
  var
+
<delphi>var
 
   ArchStream: TMemoryStream;
 
   ArchStream: TMemoryStream;
 
   FileStream: TMemoryStream;
 
   FileStream: TMemoryStream;
Line 90: Line 91:
 
   X: Integer;
 
   X: Integer;
 
   DestPath: String;
 
   DestPath: String;
  begin
+
begin
    ArchStream := TMemoryStream.Create;
+
  ArchStream := TMemoryStream.Create;
    FileStream := TmemoryStream.Create;
+
  FileStream := TmemoryStream.Create;
   
+
 
    ArchStream.LoadFromFile('ArchiveFileName');
+
  ArchStream.LoadFromFile('ArchiveFileName');
    ZReadArc:= TZlibReadArchive.Create(ArchStream);
+
  ZReadArc:= TZlibReadArchive.Create(ArchStream);
    DestPath := '/Irgendein/Pfad';
+
  DestPath := '/Irgendein/Pfad';
    for X := 0 to ZReadArc.Count -1 do begin     
+
  for X := 0 to ZReadArc.Count -1 do begin     
      ZReadArc.ExtractFileToStream(X, FileStream);
+
    ZReadArc.ExtractFileToStream(X, FileStream);
      FileStream.SaveToFile(DestPath+ZReadStream.FilesInArchive[X].FilePath+'/'+ZReadStream.FilesInArchive[X].FIleName);
+
    FileStream.SaveToFile(DestPath+ZReadArc.FilesInArchive[X].FilePath+'/'+ZReadArc.FilesInArchive[X].FIleName);
      FileStream.Position := 0;
+
    FileStream.Position := 0;
      FileStream.Size := 0;
+
    FileStream.Size := 0;
    end;
 
    ZReadArc.Free;
 
    ArchStream.Free;
 
    FileStream.Free; 
 
 
   end;
 
   end;
 +
  ZReadArc.Free;
 +
  ArchStream.Free;
 +
  FileStream.Free; 
 +
end;</delphi>
 +
 +
[[Category:Components]]

Revision as of 18:56, 7 May 2011

Deutsch (de) English (en)

Über

zlibar ist eine Unit mit Komponenten, um ein einfaches komprimiertes Dateiarchiv mit vielen Dateien zu erstellen. Sie verwendet paszlib, das in FreePascal enthalten ist, so dass keine externe Bibliothek benötigt wird.

Die zwei Hauptkomponenten sind :

  • TZlibWriteArchive - Archiv erstellen
  • TZlibReadArchive - Archiv lesen und seine Dateien extrahieren

Features von TZlibWriteArchive :

  • Erzeugt das Archiv in einem Datenstrom. Das erlaubt Ihnen, es in eine Datei zu speichern oder etwas anderes kreatives damit zu machen
  • Jede Datei im Archiv wird mit einer MD5 Prüfsumme abgelegt
  • Jede Datei kann mit einem relativem Pfad abgelegt werden
  • Enthält Fortschrittsrückmeldungen, um das Programm über den Fortschritt der aktuellen Datei und aller Dateien zu informieren

Features von TZlibReadArchive :

  • Lädt das Archiv aus einem TStream.
  • Enthält eine Fortschrittsrückmeldung, um das Programm über den Fortschritt des Extraktionsprozesses zu informieren
  • Dateien im Archiv sind über eine Indexnummer extrahierbar und werden in ein TStream extrahiert

Der Download enthält ein Demoprogramm und die Unit. Ebenso eine Package-Datei.

Obwohl nicht getestet, sollte sie auf jeder Plattform funktionieren.

Änderungen in den Versionen :

0.2.2

  • LCL Voraussetzung entfernt
  • FPC Version 2.0.4 (oder eine aktuelle Entwicklerversion) wird benötigt.
  • Kompatibel mit FPC 2.0.4 ( go figure.... ;)

0.2.1

  • Archive sollten jetzt funktionieren über Maschinen mit verschiedenen Bytefolgen (endian) hinweg.
  • Berichtigter bad memory corruption Bug
  • Benötigt jetzt die LCL für endian Sicherheit

Autor

Andrew Haines

Lizenz

zlibar.pas wird mit der selben modifizierten LGPL wie die LCL verteilt. Deshalb kann sie in geschützten Programmen verwendet werden.

Download

Das neueste stabile Release ist auf der Lazarus CCR Files Seite zu finden.

Abhängigkeiten / Systemvoraussetzungen

  • FreePascal
  • Demoprogramm benötigt Lazarus
  • LCL (für endian sichere Routinen)

Probleme: Getestet unter Linux. Benötigt Tests unter Windows.

Verwendung

Fügen Sie die Unit "zlibar" zu Ihrem Abschnitt "uses" hinzu.

TZLibWriteArchive

Beispiel:

<delphi>var

 Zar: TZlibWriteArchive;
 Stream: TMemoryStream;
 X: Integer;

begin

 Stream := TMemoryStream.Create;
 Zar := TZlibWriteArchive.Create;    
 Zar.OutStream := Stream;
 Zar.InputFiles.Add('/Pfad/zu/MyFileName1');
 Zar.InputFiles.Add('/Pfad/zu/MyFileName2');
 Zar.CreateArchive;
 Stream.SaveToFile('MySavedFileName');
 Zar.Free;
 Stream.Free;

end;</delphi>

TZlibReadArchive

Beispiel:

<delphi>var

 ArchStream: TMemoryStream;
 FileStream: TMemoryStream;
 ZReadArc: TZlibReadArchive;
 X: Integer;
 DestPath: String;

begin

 ArchStream := TMemoryStream.Create;
 FileStream := TmemoryStream.Create;
 
 ArchStream.LoadFromFile('ArchiveFileName');
 ZReadArc:= TZlibReadArchive.Create(ArchStream);
 DestPath := '/Irgendein/Pfad';
 for X := 0 to ZReadArc.Count -1 do begin    
   ZReadArc.ExtractFileToStream(X, FileStream);
   FileStream.SaveToFile(DestPath+ZReadArc.FilesInArchive[X].FilePath+'/'+ZReadArc.FilesInArchive[X].FIleName);
   FileStream.Position := 0;
   FileStream.Size := 0;
 end;
 ZReadArc.Free;
 ArchStream.Free;
 FileStream.Free;  

end;</delphi>