Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Stringlist mit TDateTime (https://www.delphipraxis.net/160411-stringlist-mit-tdatetime.html)

zeras 11. Mai 2011 19:06

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));

jfheins 11. Mai 2011 19:33

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:

SL.AddObject(s, TObject(Single(DT)));

s-off 11. Mai 2011 19:34

AW: Stringlist mit TDateTime
 
Ok, zu spät...

mirage228 11. Mai 2011 19:37

AW: Stringlist mit TDateTime
 
Alternative: Da Du Delphi 2009 benutzt, wäre eventuell der Typ Delphi-Referenz durchsuchenTDictionary aus der Unit Delphi-Referenz durchsuchenGenerics.Collections was für dich (in diesem Fall: TDictionary<string, TDateTime>). :)

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

zeras 11. Mai 2011 20:17

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.

Jumpy 11. Mai 2011 20:51

AW: Stringlist mit TDateTime
 
Wäre es denn nicht einfacher das Datum in einen String umzuwandeln? Oder geht dann die spätere Nutzbarkeit verloren?

himitsu 11. Mai 2011 22:49

AW: Stringlist mit TDateTime
 
Zitat:

Zitat von Jumpy (Beitrag 1100276)
Wäre es denn nicht einfacher das Datum in einen String umzuwandeln? Oder geht dann die spätere Nutzbarkeit verloren?

Der String ist ja noch größer, als der TDateTime/Double und wenn schon TDateTime keinen Platz hat..........
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.

Jumpy 11. Mai 2011 23:19

AW: Stringlist mit TDateTime
 
Ich dachte es geht um eine Stringlist...

himitsu 12. Mai 2011 05:30

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:

Delphi-Quellcode:
SL.AddObject(s, TObject(DT));


FredlFesl 12. Mai 2011 06:55

AW: Stringlist mit TDateTime
 
So gehts doch auch:
Delphi-Quellcode:
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));
Man muss die Objekte später nur wieder freigeben, das ist alles.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 Uhr.
Seite 1 von 2  1 2      

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