Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wo zum ... ist das Object geblieben ? (https://www.delphipraxis.net/9283-wo-zum-ist-das-object-geblieben.html)

Karsten 22. Sep 2003 22:24


Wo zum ... ist das Object geblieben ?
 
Hallo,

ich habe folgendes Problem:
Zum Drucken von Daten habe ich eine Form die eine Vor-Selektion der zu druckenden Daten enthält.

Auf dieser Form befindet sich eine CheckListBox in der ich die Datensätze über

Code:
CheckListBox.AddItem(MyDummy.Dummy1, MyDummy);
reinschreibe.

So ganz nebenbei:

Code:
type
  TDummyData = class
  public
    Dummy1: String;
    Dummy2: Integer;
    ...

    procedure ReadFromStream(aStream: TStream);
    procedure WriteToStream(aStream: TStream);
  end;
Nachdem die endgültige Selektion vorgenommen wurde und der Button 'Drucken' gedrückt wurde übernimmt wieder mein Haupt-Form und liest die Daten (Checked und die Object-Referenz) aus; wenns dann mal klappt.

Das Auslesen erfolgt über:

Code:
MyDummy := Form1.CheckListBox.Items.Objects[Index];
was aber dummerweise beim Komplieren zu einer Fehlermeldung führt.

Incompatible types: 'TDummyData' and 'TObject'

Einfügen über addItem scheint zu klappen (oder liegt da schon ein Fehler), aber das auslesen ...

Was mache ich falsch ?

Gruß,
Karsten

jbg 23. Sep 2003 00:06

Re: Wo zum ... ist das Object geblieben ?
 
Zitat:

Zitat von Karsten
Was mache ich falsch ?

Items.Objects[] liefert immer ein TObject. Da deine Klasse von TObject abgeleitet ist (auch wenn man das nicht sieht), kannst du sie auch AddItem übergeben. Beim auslesen kann der Compiler aber nicht wissen, dass du nur Instanzen von TDummyData in Objects[] hast. Du musst es ihm also sagen und das kannst du per Typecast oder mit dem as Operator tun.
Delphi-Quellcode:
obj := Items.Objects[Index] as TDummyData; // ist langsamer
obj := TDummyData(Items.Objects[Index]);

Karsten 23. Sep 2003 08:49

Re: Wo zum ... ist das Object geblieben ?
 
Danke,

funktioniert perfekt.

Gruss,
Karsten


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