![]() |
Delphi-Version: XE
Problem mit Str() und Unicode
Hallo,
ich habe folgendes Problem: In der Online-Hilfe zu XE steht: System.Str Übergeordnet: System Delphi
Delphi-Quellcode:
procedure Str(const X [: Width [:Decimals]]; var S: String);
Eigenschaften Typ Sichtbarkeit Quelle Unit Übergeordnet ---------- -------------- ------------ -------- ------------ procedure public System.pas System System Beschreibung Formatiert einen String und gibt diesen an eine Variable zurück. In Delphi konvertiert Str den numerischen Wert X entsprechend der in Width und Decimals angegebenen Formatierung in einen String. Das Ergebnis entspricht einem Aufruf der Prozedur Write, wobei aber der formatierte String nicht in eine Textdatei geschrieben, sondern in der Variable S gespeichert wird. X ist ein Ausdruck des Typs Integer oder Real. Width und Decimals sind Integer-Ausdrücke. Wenn die erweiterte Syntax aktiviert ist, ist der Parameter S eine String-Variable bzw. ein nullbasiertes Zeichen-Array (PChar). Siehe auch Write Intrinsische Routinen in Delphi Routinen für die Typumwandlung Codebeispiele ![]() ![]() Leider bringt mir der folgende Aufruf eine Warnung beim Compilieren.
Delphi-Quellcode:
Die Warnung besagt, dass der Parameter ein ShortString ist. :-(
// Das ist das Original Beispiel aus derDelphi Hilfe
// http://docwiki.embarcadero.com/CodeExamples/XE2/en/SystemStr_(Delphi) function MakeItAString(const ANumber: LongInt): String; begin { Convert any ordinal type to string } Str(ANumber, Result); end; procedure TForm1.Button1Click(Sender: TObject); begin Canvas.TextOut(10, 10, MakeItAString(-5322)); end; Fehlermeldung: [DCC Warnung] Unit1.pas(29): W1057 Implizite String-Umwandlung von 'ShortString' zu 'string' Laut Doku ist es doch ein String (unicode). Wie kann das sein? :?::?::?: |
AW: Problem mit Str() und Unicode
Die Doku stimmt halt nicht immer, vorallem nicht bei sooo alten Funktionen.
Die umkehrfunktion "Val" wurde auf String (UnicodeString) erweitert, aber "Str" war schon immer ShortString und da hatte man wohl keine Lust das alles neu zu schreiben. Bis XE war es so wohl einfacher, da der Aufruf dieser Funktionen ein bissl CompilerMagic beinhaltet. Hab jetzt noch nicht in XE2 nachgesehn, aber ich denk nicht, daß sich daran was geändert hat. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 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