Zitat von
gfjs:
:= int(dummy.Tag) as Int 32;
und n := int(dummy.tag);
bringen folgende Fehlermeldung:
[Pascal Fehler] uSpielplan.pas(154): E2250 Es gibt keine überladene Version von 'Int', die man mit diesen Argumenten aufrufen kann
Ja, ein kleiner Ausritt nach C#, dort ist Int32 auch als int verwendbar. Ein Reines
dummy.Tag as Int32
sollte funktionieren.
Zitat von
gfjs:
n := Convert.ToInt32(dummy.Tag);
bringt keine Fehlermedlung aber mit str := n.ToString; das falsche Ergebnis '0'.
Ja, ueberlege mal, was du machst: Du konvertierst ein object, das einen Int zugewiesen bekommen hat (und entsprechend auch ein solcher ist) in einen Integer. Kurz: Du konvertierst Int in Int. Bloss, dass die Methode nicht weiss, das dummy.Tag ein integer ist
Die Stichworte hier sind Boxen und Unboxen. Bei der zuweisung
dummy.Tag := 1;
"boxt" du die 1 (als Integer) in ein object. (Structs muessen erst auf objects geboxt werden, im Gegensatz zu Klassen). Und du musst nun dummy.Tag "unboxen", um aus dem object wieder einen Integer zu machen. Und dafuer reicht ein purer Typecast:
Delphi-Quellcode:
dummy.Tag as Int32
//oder
Int32(dummy.Tag)
greetz
Mike