PS: Es gibt keine Probleme wenn ich an MapAndLoad nicht mehr die
PAnsiChar(asAnsi)
, sondern stattdessen eine zusätzlich eingeführte
PAnsiChar
-Variable die auf
@asAnsi[1]
zeigt, übergebe. Übergebe ich
@asAnsi[1]
direkt statt eine zusätzliche lokale Variable einzuführen bleibt es beim Crash.
Heißt: Folgendes läuft ganz harmlos durch, wie früher:
Delphi-Quellcode:
class function TLinkerTimeStamp.GetTimeUTC(const FileName: string): TDateTime;
var
LI: TLoadedImage;
asAnsi: AnsiString;
asPAnsiChar: PAnsiChar;
begin
// Nach: http://stackoverflow.com/a/8438985/2298252
asAnsi := AnsiString(FileName);
asPAnsiChar := Addr(asAnsi[1]);
Win32Check(MapAndLoad(asPAnsiChar, nil, @LI, False, True));
try
Result := LI.FileHeader.FileHeader.TimeDateStamp / SecsPerDay + UnixDateDelta;
finally
UnMapAndLoad(@LI);
end;
end;
Kann das jemand erklären?