![]() |
AW: Code mit AnsiString lief unter 10.0 Seattle, crasht unter 10.4 Sydney
Ah danke, jetzt habe sogar ich das verstanden. Und ja, unter 10.4 Sydney sieht es nun anders aus:
Delphi-Quellcode:
Vorher (laut dir):
function _LStrToPChar(const S: _AnsiStr): _PAnsiChr;
begin if Pointer(s) = nil then Result := @(PEmptyString(Pointer(EmptyStringA))^.Nul) else Result := Pointer(s); end;
Delphi-Quellcode:
Aus
function _LStrToPChar(const S: _AnsiStr): _PAnsiChr;
begin if Pointer(s) = nil then Result := @(PEmptyString(@EmptyStringA[1])^.Nul) else Result := Pointer(s); end;
Delphi-Quellcode:
wurde
@EmptyStringA[1]
Delphi-Quellcode:
. Vielen Dank. Ich konnte nichts finden weshalb das geändert worden ist. Außerdem spielen leere Strings hier ja keine Rolle. Wahrscheinlich hat sich noch mehr geändert.
Pointer(EmptyStringA)
PS: Unter 64 Bit funktioniert alles weiterhin wie gehabt. Wahrscheinlich steckt irgendwo ein Fehler in diesem mystischen Assemblercode. PPS: Ich habe mal einen neuen Eintrag angelegt unter ![]() |
AW: Code mit AnsiString lief unter 10.0 Seattle, crasht unter 10.4 Sydney
Ich kann das leider nicht reproduzieren. Ich habe es einmal mit
Delphi-Quellcode:
versucht. Hättest du einmal ein komplettes Beispiel mit dem Aufruf? Das würde ich bei einer Bugmeldung dringend empfehlen: Genau schreiben wie es reproduzierbar ist, wenn irgendwie möglich. Ansonsten wird dein Jira-Eintrag vermutlich als nicht reproduzierbar geschlossen...
GetTimeUTC(Application.ExeName)
|
AW: Code mit AnsiString lief unter 10.0 Seattle, crasht unter 10.4 Sydney
Ja, du hast Recht. Das Merkwürdige:
Delphi-Quellcode:
liefert bei mir auch keinen Fehler. Nehme ich aber stattdessen
var dateTime := GetTimeUTC( ParamStr(0) )
Delphi-Quellcode:
kommt es zur AV. Allerspätestens hier endet mein Verständnis. Jetzt müssen die Profis ran.
var timestamp := DateTimeToStr( GetTimeUTC( ParamStr(0) ) );
Ich habe dem Report eine komplette .DPR angehangen ( ![]() |
AW: Code mit AnsiString lief unter 10.0 Seattle, crasht unter 10.4 Sydney
Zitat:
Delphi-Quellcode:
und
@EmptyStringA[1]
Delphi-Quellcode:
erzeugt - solange die Strings nicht Zerobased sind - ja exakt den gleichen Assemblercode. Damit ist diese Fehlermöglichkeit raus.
Pointer(EmptyStringA)
|
AW: Code mit AnsiString lief unter 10.0 Seattle, crasht unter 10.4 Sydney
Die Ursache war übrigens eine ganz andere: Die Definition von
Delphi-Quellcode:
ist in 10.4 falsch, was dann dazu führte dass in den Bereich vom AnsiString reingeschrieben wurde.
TLoadedImage
( ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz