System.Str
ist eine intrinsische Funktion, die aus einer längst vergangenen Zeit stammt. Die Dokumentation sagt Folgendes:
procedure Str (const X [: Breite [: Dezimalzahlen]]; var S: String);
....
Hinweise : Bei Verwendung dieses Verfahrens kann der Compiler jedoch eine Warnung ausgeben: W1057 Implizite Zeichenfolge von '% s' nach '% s' (Delphi).
Wenn eine Zeichenfolge mit einer vordefinierten Mindestlänge nicht benötigt wird, versuchen Sie stattdessen, die IntToStr-Funktion zu verwenden.
Da dies intrinsisch ist, ist wahrscheinlich etwas Besonderes im Spiel. Hinter den Kulissen wird die intrinsische Funktion durch einen Aufruf einer RTL-Unterstützungsfunktion implementiert, die ein ShortString
liefert. Compiler magic verwandelt das dann in ein string
. Und warnt dich vor der impliziten Konvertierung. Die Compiler-Magie transformiert
in
%Vor% Wo _Str0Long
ist:
Da _Str0Long
eine ShortString
zurückgibt, muss der Compiler Code generieren, um die implizite Konvertierung von ShortString
nach string
durchzuführen, wenn er der Variablen s
zugewiesen wird. Und natürlich ist es natürlich, dass Sie W1057 sehen.
Die untere Zeile besagt, dass Str
nur existiert, um die Kompatibilität mit Pascal ShortString
code zu erhalten. Neuer Code sollte nicht Str
aufrufen. Sie sollten tun, was die Dokumentation sagt und IntToStr
aufrufen:
Oder vielleicht:
%Vor%Tags und Links string delphi delphi-xe7