![]() |
Re: "Unbekannter Bezeichner" bei Eigenschaft eines
Nein, das geht so nicht. Du solltset dich mal mit den Grundlagen der OOP beschäftigen, dann wirst du dessen Vorteile schnell zu schätzen wissen.
|
Re: "Unbekannter Bezeichner" bei Eigenschaft eines
Hallo,
Zitat:
Zitat:
Delphi-Quellcode:
Denn da Delphi keine Interpretersprache ist, gibt es auch niemanden, der zur Laufzeit den Typ ermitteln kann.
Feld:Array[1..41] of TGrundstueck;
Gruß xaromz |
Re: "Unbekannter Bezeichner" bei Eigenschaft eines
Ich krieg die Krise... :wall:
Aber danke trotzdem für die Antworten! Sprich, mein Problem ist "unlösbar"? :( |
Re: "Unbekannter Bezeichner" bei Eigenschaft eines
Zitat:
Das Prinzip der OOP ist, daß abgeleitetet Klassen, sich wie ihre Superklassen verhalten können und nicht umgekehrt. Du könntest höchstens alle Eigenschaften der (abgeleiteten) Klassen in die Superklasse packen : Statt TSuperKlasse -allg. Eigenschaften -allg. Methoden -> TSpezKlasse1 -Eigenschaften Spez1 -Methoden Spez1 -> TSpezKlasse2 -Eigenschaften Spez2 -Methoden Spez2 also TIchScheissAufOOP_Klasse -allg. Eigenschaften -allg. Methoden -Eigenschaften Spez1 -Methoden Spez1 -Eigenschaften Spez2 -Methoden Spez2 |
Re: "Unbekannter Bezeichner" bei Eigenschaft eines
Hallo,
Zitat:
Zitat:
Gruß xaromz |
Re: "Unbekannter Bezeichner" bei Eigenschaft eines
Zitat:
Was greifst Du auch auf ein Feld zu, das TFeld nicht besitzt? Das ist soundso schon nicht sehr objektorientiert. Vielleicht ist es am besten, wenn Du einfach prozedural programmierst - Objektorientierung sieht nämlich komplett anders aus als Dein Code. |
Re: "Unbekannter Bezeichner" bei Eigenschaft eines
Zitat:
Wenn mir keiner helfen kann, mache ich es so, dass eine Klasse für alle da ist und je nachdem, was für einen Typ die Instanz hat, reagieren die Methoden... Nicht sonderlich elegant, aber es wird nicht anders gehen... |
Re: "Unbekannter Bezeichner" bei Eigenschaft eines
Zitat:
|
Re: "Unbekannter Bezeichner" bei Eigenschaft eines
Zitat:
NICHT je nach Typ dies oder das tun SONDERN unabhängig vom Typ immer das gleiche tun - das ist aber bei jedem Typ anders deklariert. Dies machst Du mit virtuellen Methoden:
Delphi-Quellcode:
Die beiden Enter-Methoden sind jeweils anders implementiert. In deiner Prozedur bekommst Du ein Field: TCommonField und rufst lediglich Field.Enter(APerson) auf. Fertig.
type
TPerson = class private FName: string; public property Name: string read FName write FName; end; TCommonField = class private ... public procedure Enter(APerson: TPerson); virtual; abstract; end; TNorthStation = class(TCommonField) private ... public procedure Enter(APerson: TPerson); override; end; TKnast = class(TCommonField) private ... public procedure Enter(APerson: TPerson); override; end; ... procedure TNorthStation.Enter(APerson: TPerson); begin ShowMessage(APerson.Name + ' auf Nordbahnhof'); end; procedure TKnast.Enter(APerson: TPerson); begin ShowMessage(APerson.Name + ' im Knast'); end; var Person1: TPerson; Knast: TKnast; Nordbahnhof: TNorthStation; Feld: TCommonField; begin Person1 := TPerson.Create; Person1.Name := 'Billy Joe'; Knast := TKnast.Create; Nordbahnhof := TNorthStation.Create; Feld := Knast; Feld.Enter(Person1); Feld := Nordbahnhof; Feld.Enter(APerson); end; |
Re: "Unbekannter Bezeichner" bei Eigenschaft eines
An bttb930:
Das sieht gut aus :) Aber folgende Fehlermeldungen: :gruebel: Undefinierter Bezeichner 'ShowMessage' Undefinierter Bezeichner 'ShowMessage' |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:15 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