Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi parent einer unterklasse (https://www.delphipraxis.net/17344-parent-einer-unterklasse.html)

theomega 3. Mär 2004 15:02


parent einer unterklasse
 
Hallo Leute,


ich habe zwei Klassen einmal "TFeld" und einmal "TSimulation". Dabei hat "TSimulation" als property ein Array von "TFeld" Das blöde ist: Ich muß aus einem beliebigen TFeld heraus auf das erste Feld zugreifen können. Das Problem ist: ich weiß den namen des übergeordneten Objekts ja nicht (vom Typ TSimulation)

Wer kann mir helfen?

Danke
TO

sakura 3. Mär 2004 15:07

Re: parent einer unterklasse
 
Übergib dem Object vom Typ TFeld einen Verweis auf das Object TSimulation im constructor. Das ist die übliche Art und Weise ;-)

...:cat:...

theomega 3. Mär 2004 15:09

Re: parent einer unterklasse
 
oki, na klaro, logisch

Problem, von welchem Typ muß der Parameter sein? TSimulation ja wohl nicht, sonst erstelle ich ja eine neue instanz!

Chewie 3. Mär 2004 15:11

Re: parent einer unterklasse
 
Zitat:

Zitat von theomega
Problem, von welchem Typ muß der Parameter sein? TSimulation ja wohl nicht, sonst erstelle ich ja eine neue instanz!

Wieso denn nicht? Eine Variable vom Typ TSimulation ist nur ein Zeiger, nicht das Object selbst. Somit übergibst du im Konstruktur einen Zeiger auf das TSimulation-Objekt, welches das TFeld-Objekt verwaltet.

sakura 3. Mär 2004 15:11

Re: parent einer unterklasse
 
Zitat:

Zitat von theomega
Problem, von welchem Typ muß der Parameter sein? TSimulation ja wohl nicht

Doch ;-) Wenn Du das Object vom Typ TFeld im Object vom Typ TSimulation erstellst einfach Self als Parameter übergeben ;-)

...:cat:...

theomega 3. Mär 2004 15:14

Re: parent einer unterklasse
 
komisch, ich mach die Sache zum ersten Mal, aber wenn ich self als Parameter übergebe, wird dann nicht das gesamte Obejekt kopiert? Also doppelter Speicherbedarf? Wenn das Feld dann daran etwas tut, gilt das auch dann für das eigentliche Objekt?

Und noch ein problem: ich definiere als erstes den Code für TFeld, dann für TSimulation. Wenn ich jetzt im Konstruktor für TFeld TSimulation benutzen schläft das natürlich fehl, weil das ja erst dannach definiert wird. Umdrehen kann ich die Sache auch nicht, weil ich in TSimulation ein Array von TFeld erstelle, TFeld also definiert sein muß.

sakura 3. Mär 2004 15:19

Re: parent einer unterklasse
 
Zitat:

Zitat von theomega
komisch, ich mach die Sache zum ersten Mal, aber wenn ich self als Parameter übergebe, wird dann nicht das gesamte Obejekt kopiert? Also doppelter Speicherbedarf? Wenn das Feld dann daran etwas tut, gilt das auch dann für das eigentliche Objekt?

Nein, es wird nur der Zeiger (8 Bytes) auf das Objekt kopiert.

Zitat:

Zitat von theomega
Und noch ein problem: ich definiere als erstes den Code für TFeld, dann für TSimulation.

Delphi-Quellcode:
type
  TSimulation = class; //Ankündigung!

  TFeld = class
    ....
  end;

  TSimulation = class
    ....
  end;
...:cat:...

Chewie 3. Mär 2004 16:19

Re: parent einer unterklasse
 
Zitat:

Zitat von sakura
Nein, es wird nur der Zeiger (8 Bytes) auf das Objekt kopiert.


8 Bytes??

sakura 3. Mär 2004 17:39

Re: parent einer unterklasse
 
Zitat:

Zitat von Chewie
8 Bytes??

Sorry :oops: 4 Bytes;

...:cat:...


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