Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - TDateTime Variable in TObjectList hinzufügen


Hirschi - Mi 29.04.09 09:36
Titel: TDateTime Variable in TObjectList hinzufügen
Hallo,
ich seh den Fehler leider nicht. Hab hier und auch auf anderen Seiten die Vorgehensweise zum Umgang mit TObjectList angeschaut und meiner Meinung mach ich genau das Gleiche, aber ich bekomme immer die Fehlermeldung "Inkompatible Typen"

Zu Beginn der Anwendung mache ich:

Delphi-Quelltext
1:
2:
3:
4:
5:
fListe   : TObjectList;
tempDate : TDateTime;

fListe  := TObjectList.Create(true);
tempDate := StrToDateTime(...);


Und später versuche ich einen Datumswert der Liste hinzuzufügen mit:

Delphi-Quelltext
1:
fListe.Add(tempDate);                    


Leider bekomme ich dann die Fehlermeldung: "Inkompatible Typen: 'TObject' und 'TDateTime'"

Wie bekomme ich nun das Element in die Objektliste? Eigentlich ist es doch egal, was für Typen ich in die Liste geben will...

MfG
Hirschi


thepaine91 - Mi 29.04.09 09:52

Hi, naja der Fehler spricht ja für sich.
Ist eben kein Tobject...

Ich verweise immer wieder gerne auf die F1 taste folgendes steht in der Hilfe:

type TDateTime = type Double;

Also kurz gesagt es kann garnicht funktionieren.
Also vergiss das schnell wieder :P Du Trinkst zuhause ja auch keine Milch mit Cola.

Mal damit du es dir Bildlich vorstellen kannst:
Gibt ja diese tollen Kinderspielezuge wo man klötze in verschiedenen Formen (Rechteck, dreieck, usw..) hat.
So dann hat man noch einen behälter der geschlossen ist. Und der aussparungen in eben dieser Form, diesen Formen hat.
Und in eine dreieckige aussparung passt nun mal kein Quadrat. Und in Delphi ist es das selbe :D :-)

Edit:

So du hast jetzt nicht genauer beschrieben was genau du damit machen willst. Wenn es um die Speicherung von Tdatetime in einer Liste geht. Dann nimme eine Tstringlist.
Mit timetostr, strtotime kannste das Umwandeln.

Oder folgendes:

Delphi-Quelltext
1:
 Tdatetimearray: Array[1..100000of Tdatetime;                    


Hirschi - Mi 29.04.09 10:27

Ich dachte, alles ist im Grunde ein TObject...wie auch immer. Das bedeutet, wenn du Recht hast, dass eine Objektliste keine primitiven Datentypen verwalten kann. Klasse. Was ginge, ist, wenn ich einen eigenen Datentyp mache, der nur ein TDateTime-Element hat. Dachte, es gäbe aber einen geraderen Weg.

MfG
Hirschi

Edit: Dein nachgetragener Vorschlag ist ja nicht dynamisch und deshalb leider nicht akzeptabel.


thepaine91 - Mi 29.04.09 11:21

also Hirschi... dann mach nen dynamischen Array draus ^^ stell dich nicht so an :P

EDIT:

wenn ich das so richtig verstanden habe :P :nixweiss:


jaenicke - Mi 29.04.09 13:25

user profile iconHirschi hat folgendes geschrieben Zum zitierten Posting springen:
Was ginge, ist, wenn ich einen eigenen Datentyp mache, der nur ein TDateTime-Element hat.
Ein Record reicht ja bereits, den erzeugst du jeweils mit New und legst den Zeiger darauf in eine TList (nicht TObjectList).
Am Ende müssen die natürlich mit Dispose wieder freigegeben werden.