Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi FormatDateTime + AnsiString + RAD 2009 (https://www.delphipraxis.net/136431-formatdatetime-ansistring-rad-2009-a.html)

AJ_Oldendorf 30. Jun 2009 08:30


FormatDateTime + AnsiString + RAD 2009
 
Hallo zusammen,
angenommen, ich arbeite mit FormatDateTime (welches mir einen String liefert), und brauche das zurückgelieferte Ergebnis aber unbedingt als AnsiString, ist es dann in Ordnung, es so zu schreiben:

Delphi-Quellcode:
MyAnsiString := AnsiString(FormatDateTime('hh":"nn":"ss', Now)));
Oder wie würdet ihr es machen?

Viele Grüße
Alex

samso 30. Jun 2009 16:40

Re: FormatDateTime + AnsiString + RAD 2009
 
Einmal ")" wech und dann würde ich sagen: Auf jeden Fall ist das in Ordnung! Ist ja schließlich ein freies Land!

Letzendlich ist es immer die Frage, was wird aus der Zeichenkette im weiteren Verlauf? Danach muß man dann entscheiden, ob der gewählte Datentyp den gewünschten Anforderungen entspricht. Wenn die Zeichenkette später in einer Datei gespeichert werden soll, die dann vielleicht wieder von einem anderen Programm verwarbeitet wird, dann ist der Type der Zeichenkette durch den Type der Datei vorgegeben. Möglicherweise sollte man dann den AnsiString gleich entsprechen deklarieren - z.B. "TMyAnsiType = type Ansistring(20127)". Vielleicht soll die Zeichenkette ja auch zu einem LCD-Display geschickt werden, dann sollte man es vielleicht doch eher als ein Array of Byte sehen?
Die Experten raten dazu die Umwandlung von String in irgendeinen andere Stringtype möglichst spät vorzunehmen. Also z.B. erst beim Speichern der Datei.

Popov 30. Jun 2009 16:58

Re: FormatDateTime + AnsiString + RAD 2009
 
Zitat:

Zitat von AJ_Oldendorf
Hallo zusammen,
angenommen, ich arbeite mit FormatDateTime (welches mir einen String liefert), und brauche das zurückgelieferte Ergebnis aber unbedingt als AnsiString, ist es dann in Ordnung, es so zu schreiben:

Delphi-Quellcode:
MyAnsiString := AnsiString(FormatDateTime('hh":"nn":"ss', Now)));

Also vielleicht verstehe ich dein Problem falsch, aber sind inzwischen nicht alle Strings automatisch AnsiStrings? Früher, also noch zur Delphi 1 Zeiten, da war der normale String nur 255 Zeichen lang, also ShortString. AnsiString, falls es den damals schon gab, mußte man den erst so deklarieren. Irgendwann zwischen Delphi 1 und 3 (wahrscheinlich zwischen 1 und 2) wurde der Spaß umgedreht und der String war automatisch AnsiString, dagegen mußte man den ShortString erst so deklarieren. Natürlich gibt es auch die Compilerderektiven, aber das lassen wir hier mal weg. Das gleiche war mit Integer und LongInt und Smallint.

Wenn du also FormatDateTime benutzt, dann sollte das meiner Meinung nach ein AnsiString ergeben. Konvertierung also nicht nötig.

himitsu 30. Jun 2009 17:02

Re: FormatDateTime + AnsiString + RAD 2009
 
in/ab Delphi 2009 ist String ein UnicodeString (das ist eine Mischung aus WideString und AnsiString ... also Unicodesupport mit 2 Byte pro Zeichen plus Delphiinterne Speicherverwaltung)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:43 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