Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Zip Kompression / Store wählen? (https://www.delphipraxis.net/192058-zip-kompression-store-waehlen.html)

gee21 17. Mär 2017 10:18

Zip Kompression / Store wählen?
 
Hallo

Ich wollte fragen ob es eine einfache Möglichkeit gibt mit der "system.zip" die KompressionsOption wählen zu können?
Am Schluss brauche ich eine Zip Datei die nur "gespeichert" ist und nicht komprimiert (Store)


Delphi-Quellcode:
function zipFile(ArchiveName, Filename: String): boolean;
 var Zip:TZipFile;
begin
  Zip:=TZipFile.Create;
  try
   if FileExists(ArchiveName) then DeleteFile(ArchiveName);
   zip.Open(ArchiveName,zmWrite);
   zip.Add(Filename);
   zip.Close;
   Result:=true;
  except
   REsult:=false;
  end;
  FreeAndNil(zip);
end;

Uwe Raabe 17. Mär 2017 10:29

AW: Zip Kompression / Store wählen?
 
Vieleicht so?

Delphi-Quellcode:
zip.Add(FileName, '', zcStored);

gee21 17. Mär 2017 11:43

AW: Zip Kompression / Store wählen?
 
:o

Vielen Dank. :thumb:

gee21 17. Mär 2017 14:24

AW: Zip Kompression / Store wählen?
 
Ich war wohl etwas zu schnell mit meiner Antwort.

Ich zippe nun einen Ordner wie folgt. Aber leider reklamiert das Programm, dass dann anschliessend das .zip File weiterverarbeitet, immer noch das dieses Archiv nicht im Store Modus gespeichert wurde. Wenn ich den Ordner mit WinRAR packe dann gehts.

Weiss jemand was ich falsch mache?

Delphi-Quellcode:
procedure DoZip(SourceDir: string; ZipFile: TZipFile);
var
  FileName: String;

  procedure ZipFiles(RealDir, ZipDir: string);
  var
    E: Integer;
    sr: TSearchRec;
  begin
    ZipDir := StringReplace(RealDir, ZipDir, '', []);
    E := FindFirst(RealDir + '*.*', (faAnyFile and not faDirectory), sr);
    while E = 0 do
    begin
      if (sr.Attr and faDirectory) = 0 then
      begin
        FileName := sr.Name;
        if RealDir + FileName <> ParamStr(0) then
          ZipFile.Add(RealDir + FileName, ZipDir + FileName, zcStored);
      end;
      E := FindNext(sr);
    end;
    FindClose(sr);
  end;


  procedure ZipPath(RealDir, ZipDir: string );
  var
    E: Integer;
    sr: TSearchRec;
    F: Boolean;
  begin
    RealDir := RealDir + '\';
    if ZipDir = '' then
    begin
      ZipDir := RealDir;
      E := Length(ZipDir);
      F := True;
      while (E > 0) and ((Copy(ZipDir, E, 1) <> '\')) or (F) do
      begin
        Delete(ZipDir, E, 1);
        Dec(E);
        F := False;
      end;
    end;
    E := FindFirst(RealDir + '*.*', faDirectory, sr);
    while E = 0 do
    begin
      if (sr.Attr and faDirectory) = faDirectory then
      begin
        FileName := sr.Name;
        if (FileName <> '.') and (FileName <> '..') then
        begin
          ZipPath(RealDir + FileName, ZipDir);
        end;
      end;
      E := FindNext(sr);
    end;
    FindClose(sr);
    ZipFiles(RealDir, ZipDir);
  end;

  begin
  ZipPath(SourceDir, '');
end;
rufe es dann so auf:
Delphi-Quellcode:
    ZipFile := TZipFile.Create;
    ZipFile.Open(outpath2, zmWrite);
    DoZip(ExtractFilePath(Application.Exename)+'temp\res', ZipFile);
    ZipFile.Close;
    FreeAndNil(ZipFile);

BrightAngel 17. Mär 2017 14:33

AW: Zip Kompression / Store wählen?
 
Ich habe zwar keine Hilfe, aber vielleicht Hilfe zur Selbsthilfe. Die Fehlermeldung, dass "irgendwas" am Format für den Store nicht stimmt ist ja wenig auskunftsreich. Du könntest mal eine einzelne (am Besten vermutlich kleine [da einfacher im Editor zu betrachten]{Lorem Ipsum?}) Textdatei auf beide Weisen verarbeiten (also einmal WinRAR und einmal dein Programm).
Dann kannst du vielleicht zuerst mal die Größen der Beiden vergleichen. Zudem ist ein Hexeditor eventuell ganz hilfreich um die Unterschiede zu sehen. Da die Files ja gar nicht komprimiert sein sollen, kann man da einfach die Datei wieder erkennen.
Hoffe, dass dich das weiter bringt... :)

Brighty

gee21 17. Mär 2017 14:34

AW: Zip Kompression / Store wählen?
 
Danke das mach ich gleich mal

gee21 17. Mär 2017 15:10

AW: Zip Kompression / Store wählen?
 
Liste der Anhänge anzeigen (Anzahl: 4)
Nun Ja, Also folgendes habe ich mal herausgefunden.

Die gezipten Dateien die sich in den beiden Archiven befinden haben die selbe Grösse, selbe PackGrösse und auch die selbe CRC "Prüfungs Nummer".

Die beiden zip Dateien sind jedoch nicht genau gleich gross. Und wenn ich diese mit Hex/Text Editor aufmache ist zumindest der Anfang wie auch das Ende der Dateien nicht genau gleich. Ist das der Header der Zip Datei?

Also vermute ich mal, dass das packen der Dateien Grundsätzlich korrekt im Store Modus durchgeführt wird. Aber beim erstellen der zip Datei wird irgendein Unterschied gemacht?

Uwe Raabe 17. Mär 2017 15:38

AW: Zip Kompression / Store wählen?
 
Zitat:

Zitat von gee21 (Beitrag 1364552)
Also vermute ich mal, dass das packen der Dateien Grundsätzlich korrekt im Store Modus durchgeführt wird. Aber beim erstellen der zip Datei wird irgendein Unterschied gemacht?

Das ist sicher möglich. Es stellt sich jetzt nur die Frage, warum das nachfolgende Programm über das Speicherformat meckert, obwohl das doch offenbar richtig ist. Kann man irgendwie herausbekommen, welches Kriterium da herangezogen wird? Der Kompressionsmodus der einzelnen Dateien scheint es ja nicht zu sein (zumindest nicht allein).

gee21 17. Mär 2017 16:27

AW: Zip Kompression / Store wählen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Im Internet finde ich auf diversen Seiten nur den Input das man keine Kompression verwenden darf (also Store verwenden).

Das Programm/Spiel spuckt diese Fehlermeldung beim laden der zip Datei aus: (Bild)

Wenn ich in der Log Datei des Spiel schaue steht da leider auch nur:
Code:
NOT loaded: unsupported compression typ
e

a.def 17. Mär 2017 16:38

AW: Zip Kompression / Store wählen?
 
Kontaktiere doch mal den Urheber dieses Codes vielleicht weiß der mehr :stupid:

=> http://www.delphipraxis.net/174300-t...directory.html (stahli)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:53 Uhr.
Seite 1 von 2  1 2      

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