Habs mir jetzt mal etwas genauer angeschaut, nur werde ich daraus leider nicht wirklich schlau.
InArchive.Open(...)
liefert hier halt eine 1 zurück, was eigentlich eine 0 sein sollte. 0: heißt alles okay, 1: keine Ahnung was für ein Fehler.
Delphi-Quellcode:
// 7Zip plugin von http://www.progdigy.com/
// Zeile 1032
procedure T7zInArchive.OpenFile(const filename: string); stdcall;
var
strm: IInStream;
begin
strm := T7zStream.Create(TFileStream.Create(filename, fmOpenRead or fmShareDenyNone), soOwned);
try
RINOK(
InArchive.Open(
strm,
@MAXCHECK, self as IArchiveOpenCallBack
)
);
finally
strm := nil;
end;
end;
Und das Interface wird dabei angesprungen:
Delphi-Quellcode:
IInArchive = interface
['{23170F69-40C1-278A-0000-000600600000}']
function Open(stream: IInStream; const maxCheckStartPosition: PInt64;
openArchiveCallback: IArchiveOpenCallback): HRESULT; stdcall;
Tjo, und jetzt wäre eine Dokumentation recht, warum denn überhaupt diese 1 geliefert wird...
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)