Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi NativeInt to string (https://www.delphipraxis.net/211400-nativeint-string.html)

himitsu 10. Sep 2022 17:15

AW: NativeInt to string
 
Das ist wie der Unterschid bei


Delphi-Quellcode:
var
  S: string;
  P: Pointer;

P := @S[1];
P := @S[Low(string)]; // weil im Mobilen waren die Strings mal 0-basiert, also S[0] war das erste Zeichen wenn für iOS kompiliert

P := @S; // Zeiger auf die Variable, nicht auf den String
P := PChar(S); // Zeiger auf den String (erstes Zeichen), aber wenn '', dann Ersatzweise ein Zeiger auf die Konstante EmptyString mit #0#0
P := Pointer(S); // bei '' ist das hier NIL (wichtig, wenn man z.B. mit Leerstrings in der WinAPI arbeitet)
Oder String-Resourcen.
In dem PChar werden "Werte" bis #$0000FFFF als Index für die PE-Ressourcen benutzt, und darüber sind es Zeiger auf Strings.


Ich kenn Leute, die schreiben auch
Delphi-Quellcode:
S := EmptyString;
anstatt
Delphi-Quellcode:
S := '';
, was per se nicht falsch ist, aber
ich hatte mal mit EmptyString eine böse Erfahrung.

Und auch wenn der "Code" so selbstsprechend ist, empfinde ich "Namen" als Konstante/Variable auf "etwas" und nicht als "Nichts" ... kann so den Code schlechter lesen.


Durch einen schiefen Pointer wurde dort etwas in EmptyString reingeschrieben, denn "typisierte String-Konstanten" sind in Wirklichkeit "schreibgeschützte Variablen", aber sie lassen sich dennoch beschreiben.
Mit dem Ergebnis, dass wir eine halbe Woche danach suchten, warum alle DevExpress-Grids im Programm in "leeren" Zellen plötzlich "etwas" anzeigten, denn sie nutzen auch EmptyString zu Initialisierung.

venice2 10. Sep 2022 17:18

AW: NativeInt to string
 
Deine Ausführung ist Interessant!
Danke nochmals.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:02 Uhr.
Seite 2 von 2     12   

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