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