Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Typenumwandlung (https://www.delphipraxis.net/86121-typenumwandlung.html)

PinKing 9. Feb 2007 12:13


Typenumwandlung
 
hallo,
gerade hab ich ein kleines problem mit dem informatik projekt das mir mein lehrer aufgedrückt hat. Wie man es allgemein löst hab ich schon herausgefunden, im prinzip müsste ich nur eine Typenumwandlung machen, die DP-Suche hat mich nur soweit gebracht, dass sich das ganze UpCast nennt, leider konnte ich die beispiele nicht auf mein projekt übertragen.
Zum problem.
Wenn es mal fertig ist, soll mit dem programm ein Supermarkt simuliert werden. wir sollten an diesem Beispiel uns üben mit mehreren klassen zu arbeiten. Für diesen zweck haben wir z.B. eine eigene Klasse tRegal und Produkttyp. Da man ja mehrer regale hat werden dementsprechend viele Objekte von den Typen erstellt.
Diese sollen in einer selbstgeschriebenen Listenklasse verwaltet, die mit TObject arbeitet (also als rückgabe wert usw.) mein lehrer meinte es würde reichen wenn man es so allgmein macht.

Objekte in die Liste Eintragen funktioniert wunderbar, aber wenn ich mir ein objekt ausgeben lasse von der liste hat es den typ TObject was mir aber nicht viel bringt, ich muss dem irgendwie beibringen das er es handhaben soll als währe es TRegal oder z.B. TProdukttyp.
dafür bräuchte ich dann diese typenumwandlung, mein problem ist jetzt wie ich diese vornehme.
als beispiel wenn ich mir ein objekt aus der liste ausgeben lasse, wie kann ich dann dort die typenumwandlung vornehmen um auf eine methode des "Regalklasse" zuzugreifen?

Delphi-Quellcode:
Regal := Regalliste.findeObjekt(schluessel);
Regal.fuege_Produkt_ein;
hoffe ihr könnt mir helfen.

mfG
Pin

bttb930 9. Feb 2007 12:18

Re: Typenumwandlung
 
Delphi-Quellcode:
Regal := Regalliste.findeObjekt(schluessel) as TRegal;
oder

Delphi-Quellcode:
if Regalliste.findeObjekt(schluessel) is TRegal then
  Regal := Regalliste.findeObjekt(schluessel) as TRegal;
oder wenn du ganz sicher bist, dass was zurück kommt und das ein regal ist:

Delphi-Quellcode:
Regal := TRegal(Regalliste.findeObjekt(schluessel));

PinKing 9. Feb 2007 12:35

Re: Typenumwandlung
 
herzlichen dank^^
das ist ja simpell *g*

lg pin


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