AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Problem mit Str() und Unicode

Ein Thema von MaBuSE · begonnen am 13. Jun 2012 · letzter Beitrag vom 13. Jun 2012
Antwort Antwort
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Problem mit Str() und Unicode

  Alt 13. Jun 2012, 17:55
Delphi-Version: XE
Hallo,

ich habe folgendes Problem:

In der Online-Hilfe zu XE steht:

System.Str
Übergeordnet: System

Delphi 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
SystemStr (Delphi)
Quelle: http://docwiki.embarcadero.com/VCL/de/System.Str

Leider bringt mir der folgende Aufruf eine Warnung beim Compilieren.
Delphi-Quellcode:
// 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;
Die Warnung besagt, dass der Parameter ein ShortString ist.
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?

(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#2

AW: Problem mit Str() und Unicode

  Alt 13. Jun 2012, 18:50
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:09 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