![]() |
Delphi-Version: 2009
Stringlist mit TDateTime
Hallo,
ich nutze für ein Projekt eine Stringliste und wollte dazu ein Datum mit Addobject hinzufügen. Ist so etwas möglich? Hintergrund ist, dass ich eine Stringliste für Dateien nutze und das Erstellungsdatum gleich mit dranhängen wollte, um es später separat zu nutzen. So geht es offensichtlich nicht.
Delphi-Quellcode:
SL.AddObject(s, TObject(DT));
|
AW: Stringlist mit TDateTime
Möglich ja, aber nicht so.
TDateTime ist ein double, also 64bit lang - TObject ist bis jetzt nur 32bit lang. Also entweder eine Klasse schreiben deren einziger Inhalt ein TDatetime ist, oder den TDatetime nach Single casten. Da geht zwar etwas Genauigkeit verloren, aber vielleicht reicht es dir noch ;) Zitat:
|
AW: Stringlist mit TDateTime
Ok, zu spät...
|
AW: Stringlist mit TDateTime
Alternative: Da Du Delphi 2009 benutzt, wäre eventuell der Typ
![]() ![]() Das geht hier mit einer Dictionary, weil die Schlüssel Dateinamen sind, die wiederum i.d.R. ja nicht doppelt vorkommen. Wenn zu einem bestimmten String (Dateinamen) mehrere Werte (TDateTime) hinzukommen können, ginge diese Lösung mit TDictionary leider nicht. Viele Grüße |
AW: Stringlist mit TDateTime
Danke für die Tipps.
Das mit Dictionary ist für mich neu. Da müßte ich mich erst einmal reinarbeiten. Ich werde mal sehen, welches ich einbauen kann. Problem ist nur, dass ich das in ein bestehendes Projekt einbauen muss, wo für andere Sachen schon die Stringlist verwendet wird. Aber da muss ich halt ein wenig ändern. |
AW: Stringlist mit TDateTime
Wäre es denn nicht einfacher das Datum in einen String umzuwandeln? Oder geht dann die spätere Nutzbarkeit verloren?
|
AW: Stringlist mit TDateTime
Zitat:
Und nein, einen String in einen Pointer zu casten ist keine gute Idee (wer an der Referenzzählung rumspielt und davon keine Ahnung hat, der muß irgendwann dafür leiden), es sei denn man nutzt einen PChar, mit eigenem Speicher, was eben größer ist, als der TDateTime. |
AW: Stringlist mit TDateTime
Ich dachte es geht um eine Stringlist...
|
AW: Stringlist mit TDateTime
Das schon, nur daß dieses TDateTime (DT) in .Objects liegen sollte, wärend im .Strings vermutlich schon ein anderer String liegt. :wink:
Zitat:
|
AW: Stringlist mit TDateTime
So gehts doch auch:
Delphi-Quellcode:
Man muss die Objekte später nur wieder freigeben, das ist alles.
Type
TDateTimeContainer = Class DateTime : TDateTime; Constructor Create(aDateTime : TDateTime) End; Constructor TDateTimeContainer.Create(aDateTime : TDateTime); Begin DateTime := aDateTime; End; ... MyStringList.AddObject (MyString, TDateTimeContainer.Create(MyDateTime)); |
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