Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi variable einer abgeleiteten Klasse auslesen (https://www.delphipraxis.net/14358-variable-einer-abgeleiteten-klasse-auslesen.html)

goddi 7. Jan 2004 17:50


variable einer abgeleiteten Klasse auslesen
 
hi,

zunächst einmal folgender code..:

Delphi-Quellcode:
tTeil = class
      TeilTyp: string;
      Ladung, Nummer: integer;
      x, y: integer;
      aktiv: boolean;
      constructor init(nx, ny: integer);virtual;
      procedure zeichnen;virtual;
      function anWelchemObjekt: tTeil;
      end;

tBuchse = class(tTeil)
      Verbindung: tBuchse;
      Typ: string;
      constructor init(nx, ny: integer);override;
      procedure zeichnen;override;
      end;

zweiEeinA = class(tTeil)
      Eingang1, Eingang2, Ausgang1: tBuchse;
      constructor init(nx, ny: integer); override;
      procedure zeichnen; override;
      end;


[....]

procedure blabla;
var t: tTeil;
  begin
  try
    ShowMessage(inttostr(aktTeil.Eingang1.Ladung));
    except
      ShowMessage('ungültiger Typ');
    end;
  end;

das problem ist, dass 't' vom typ tTeil sein MUSS, ich in diesem aber die variable Eingang1 nicht deklarieren will (wenns ned anders geht, muss ichs halt machen..).

wenn jmd was eleganteres wüsste, möge er sich bitte melden :)

sakura 7. Jan 2004 18:07

Re: variable einer abgeleiteten Klasse auslesen
 
Das Prinzip welche Du brauchst schimpft sich Typ-Casting.

Delphi-Quellcode:
procedure blabla;
var t: tTeil;
  begin
    if aktTeil is zweiEeinA then
      ShowMessage(inttostr(zweiEeinA(aktTeil).Eingang1.Ladung))
    else
      ShowMessage('aktTeil ist vom Typ: ' + aktTeil.ClassName);
  end;
...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:05 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 by Thomas Breitkreuz