![]() |
"übergeordnete" Klasse ermitteln
Viellicht ein sch... titel aber ich konnte es nicht anders ausdrücken. Ich habe eine Proc in einer Unterklasse und will von der aus auf eine Eigenschaft der Überklasse zugreifen, in der die Klassenvariable deklariert ist:
:wiejetzt:
Delphi-Quellcode:
geht das irgendwie oder muss ich das so machen, dass ich nen pointer auf die ueberklasse in die unterklasse mit reintu und dann on create einstell?
type
tunterklasse=class procedure proc; end; tueberklasse=class eigenschaft:string; unterklasse:tunterklasse; end; [...] procedure tunterklasse.proc; begin //Hier muss ich jetzt auf EIGENSCHAFT zugreifen. geht das? end; Tut mir echt leid, wenn ich hier so unverständlich schreib... :pale: |
Re: "übergeordnete" Klasse ermitteln
NEIN
ABER MACH ES DOCH SO
Delphi-Quellcode:
dazu gibt es ja private und protected
type
tunterklasse=class procedure proc; private eigenschaft:string; end; tueberklasse=class end; |
Re: "übergeordnete" Klasse ermitteln
Du musst beim Aufruf des Konstruktors der Unterklasse einfach den Self-Zeiger der Überklasse mit übergeben.
|
Re: "übergeordnete" Klasse ermitteln
Zitat:
Siehe z.B. ![]() |
Re: "übergeordnete" Klasse ermitteln
wie kann man den self-zeiger übergeben?
is self überhaupt ein zeiger? @kroko: ne, so will ich das nicht machen, weil bei mir sieht das ungefähr so aus:
Delphi-Quellcode:
ich will attribs einfach der Ordnung halber als extra unterpunkt machen.
tattribs=class
//... procedure load //hier brauch ich filename end; tfile=class private filename:string; public //~1.000.000 propertys und prozeduren :) attribs:tattribs; end; |
Re: "übergeordnete" Klasse ermitteln
Zitat:
Delphi-Quellcode:
Hier wird als Argument der Owner übergeben. Im Konstruktor wird dann dem Feld TComponent.FOwner der Parameter zugewiesen.
Edit := TEdit.Create(Self);
Zitat:
Allerdings sollte man IMO solche Doppelbeziehungen vermeiden. Du könntest stattdessen z.B. FileName im Konstruktor übergeben. Und wenn man eine Klasse sehr schlecht aus einer anderen lösen kann, sollten sie lieber zusammenbleiben. |
Re: "übergeordnete" Klasse ermitteln
Das würde ich so machen!
Delphi-Quellcode:
TAttribs = class
//... procedure Load (AFileName: String); //hier brauch ich filename end; TFile = class private FFilename: String; FAttribs: TAttribs; public //~1.000.000 propertys und prozeduren :) property Attribs: TAttribs read FATttribs; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 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