Einzelnen Beitrag anzeigen

Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#7

AW: Blöde Frage zum Thema ZipCrypto

  Alt 18. Aug 2023, 14:44
Also, hab es eingegrenzt. Unverschlüsselt funktioniert es, verschlüsselt mit Deiner Unit läuft es in einen Fehler. Hier was ich mache:
Delphi-Quellcode:
  var
    myIni: TMemIniFile;
    myZip: TEncryptedZipFile; // Oder zum Testen TZipFile
    myStream: TMemoryStream;
    myFileStream: TFileStream;
  begin
    FileName := 'example.ini.zip';
    Path := TPath.Combine(TPath.GetDocumentsPath, FileName)
    myFile := Path;
    try
      MyFileStream := TFileStream.Create(myFile, fmOpenRead);
      myStream := TMemoryStream.Create;
      myZip := TEncryptedZipFile.Create('passwort');
// myZip := TZipFile.Create; // Mit einer nicht passwortgeschützten Version geht es
      MyFileStream.Position := 0;
      myZip.Open(MyFileStream, zmRead);
      myZip.Read(0, myStream, myHeader);
      myIni := TMemIniFile.Create(myStream); // <- an dieser Stelle gibt es einen EZDecompression Error mit Message "Data Error"
      fDebugLevel := myIni.ReadInteger('local', 'dbgLvl', 1); // Hier kommen wir nicht mehr hin...
    finally
      myIni.Free;
      myZip.Close;
      myZip.Free;
      myStream.Free;
      myFileStream.Free;
    end;
Der Fehler ist dann tiefer drinnen, beim Versuch TZDecompressionStream.Read auszuführen kommt es dann zu diesem Fehler. Der Stream hat zwar eine korrekte Länge ist aber ausschließlich mit Nullen gefüllt. Wenn ich tiefer gehe bin ich wieder bei Dir in der Unit, beim TDecryptstream.Read, was aber bisher noch nicht zu einem Fehler führte...

Danke an Himitsu und Kodezwerg...ich hab mich erstmal verbissen. Es müsste eine Kleinigkeit sein, die ich aber übersehe. WEnn ich noch mehr als zwei Tage brauche, dann schaue ich mir mal PeaZip an. Ich möchte gerne externe DLLs vermeiden.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat