Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Code mit AnsiString lief unter 10.0 Seattle, crasht unter 10.4 Sydney

  Alt 11. Jun 2020, 07:13
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?

Geändert von Der schöne Günther (11. Jun 2020 um 07:28 Uhr)
  Mit Zitat antworten Zitat