AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zip Kompression / Store wählen?

Ein Thema von gee21 · begonnen am 17. Mär 2017 · letzter Beitrag vom 17. Mär 2017
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.755 Beiträge
 
Delphi 12 Athens
 
#1

AW: Zip Kompression / Store wählen?

  Alt 17. Mär 2017, 15:38
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).
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
gee21

Registriert seit: 3. Jan 2013
199 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Zip Kompression / Store wählen?

  Alt 17. Mär 2017, 16:27
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
Angehängte Grafiken
Dateityp: png Unbenannt.png (9,4 KB, 13x aufgerufen)
Robert
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#3

AW: Zip Kompression / Store wählen?

  Alt 17. Mär 2017, 16:38
Kontaktiere doch mal den Urheber dieses Codes vielleicht weiß der mehr

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

Geändert von a.def (17. Mär 2017 um 16:41 Uhr)
  Mit Zitat antworten Zitat
gee21

Registriert seit: 3. Jan 2013
199 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Zip Kompression / Store wählen?

  Alt 17. Mär 2017, 20:51
Also leider finde ich es nicht heraus.

Habe es jetzt auch noch mit zipforge versucht und habe da auch diverse einstellungen getestet. Aber auch so kommt immer die besagte fehlermeldung betreffend "compression store".

Mit Winrar gehts wenn ich in den optionen auf "speichern" umstelle. Irgendwas macht Winrar einfach anders
Robert
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Zip Kompression / Store wählen?

  Alt 17. Mär 2017, 20:55
Gibst du den Stream ordnungsgemäß wieder frei? Nicht dass du alles in den Stream packst und ihn dann nicht ordnungsgemäß wieder frei gibst und so eine kaputte Datei auf der Festplatte landet.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
gee21

Registriert seit: 3. Jan 2013
199 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Zip Kompression / Store wählen?

  Alt 17. Mär 2017, 21:08
Ich glaube es müsste so gut sein?

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

  function FileInUse(FileName: string): Boolean;
  var
    hFileRes: hFILE;
  begin
    Result := False;
    if not FileExists(FileName) then
      exit;
    hFileRes := CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
    Result := (hFileRes = INVALID_HANDLE_VALUE);
    if not Result then
      CloseHandle(hFileRes);
  end;

  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 FileInUse(RealDir + FileName) then
        begin
          CopyFile(PWideChar(RealDir + FileName), PWideChar(DestDir + FileName), False);
          ZipFile.Add(DestDir + FileName, ZipDir + FileName, zcStored);
          DeleteFile(PWideChar(DestDir + FileName));
        end
        else
          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;
Delphi-Quellcode:
    
    ZipFile := TZipFile.Create;
    ZipFile.Open(outpath2+'\'+edit3.Text+'.wotmod', zmWrite);
    DoZip(geepfad+'\temp\res' ,ZipFile, outpath2+'\'+edit3.Text+'.wotmod');
    ZipFile.Close;
    FreeAndNil(ZipFile);
Robert

Geändert von gee21 (17. Mär 2017 um 21:25 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: Zip Kompression / Store wählen?

  Alt 17. Mär 2017, 21:23
Wenn man sich mal die beiden oben angehängten Textdateien genauer anschaut, so erkennt man, dass MEINEv.txt eine Teilmenge von WINRARv.txt ist. MEINEv.txt ist in WINRARv.txt ungefähr am Position F8 zu finden.

WinRar scheint davor die Verzeichnisstruktur abzulegen, was bei Deiner Variante fehlt.

Eigentlich hat das ZIP-Format die Möglichkeit, leere Verzeichnisse mit abzulegen. Meine Vermutung: Die fehlen hier.

Also bitte mal bei WinRar nachschauen, wie da das Zippen genau konfiguriert ist und dieses dann in Deiner Variante vollständig abbilden.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.755 Beiträge
 
Delphi 12 Athens
 
#8

AW: Zip Kompression / Store wählen?

  Alt 17. Mär 2017, 21:50
Interessant ist auch, daß sich das WinRAR-File nicht mit TZipFile lesen lässt. Übrigens auch nicht mit 7-Zip oder den Windows-Bordmitteln.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz