AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Code mit AnsiString lief unter 10.0 Seattle, crasht unter 10.4 Sydney
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Der schöne Günther · begonnen am 11. Jun 2020 · letzter Beitrag vom 13. Jun 2020
Antwort Antwort
Seite 2 von 2     12   
Der schöne Günther

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

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

  Alt 12. Jun 2020, 09:07
Ah danke, jetzt habe sogar ich das verstanden. Und ja, unter 10.4 Sydney sieht es nun anders aus:

Delphi-Quellcode:
function _LStrToPChar(const S: _AnsiStr): _PAnsiChr;
begin
  if Pointer(s) = nil then
    Result := @(PEmptyString(Pointer(EmptyStringA))^.Nul)
  else
    Result := Pointer(s);
end;
Vorher (laut dir):
Delphi-Quellcode:
function _LStrToPChar(const S: _AnsiStr): _PAnsiChr;
begin
  if Pointer(s) = nil then
    Result := @(PEmptyString(@EmptyStringA[1])^.Nul)
  else
    Result := Pointer(s);
end;
Aus @EmptyStringA[1] wurde Pointer(EmptyStringA) . 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.

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
https://quality.embarcadero.com/browse/RSP-29567

Geändert von Der schöne Günther (12. Jun 2020 um 09:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#12

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

  Alt 12. Jun 2020, 10:11
Ich kann das leider nicht reproduzieren. Ich habe es einmal mit GetTimeUTC(Application.ExeName) 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...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Der schöne Günther

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

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

  Alt 12. Jun 2020, 10:21
Ja, du hast Recht. Das Merkwürdige: var dateTime := GetTimeUTC( ParamStr(0) ) liefert bei mir auch keinen Fehler. Nehme ich aber stattdessen var timestamp := DateTimeToStr( GetTimeUTC( ParamStr(0) ) ); kommt es zur AV. Allerspätestens hier endet mein Verständnis. Jetzt müssen die Profis ran.

Ich habe dem Report eine komplette .DPR angehangen (Direktlink)
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#14

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

  Alt 12. Jun 2020, 10:26
Ah danke, jetzt habe sogar ich das verstanden. Und ja, unter 10.4 Sydney sieht es nun anders aus.

Aus @EmptyStringA[1] wurde Pointer(EmptyStringA) . 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.
Danke! Diese Änderung ist ja eher kosmetischer Natur. @EmptyStringA[1] und Pointer(EmptyStringA) erzeugt - solange die Strings nicht Zerobased sind - ja exakt den gleichen Assemblercode. Damit ist diese Fehlermöglichkeit raus.
  Mit Zitat antworten Zitat
Der schöne Günther

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

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

  Alt 13. Jun 2020, 07:24
Die Ursache war übrigens eine ganz andere: Die Definition von TLoadedImage ist in 10.4 falsch, was dann dazu führte dass in den Bereich vom AnsiString reingeschrieben wurde.

(https://quality.embarcadero.com/browse/RSP-29567)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz