Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Forward-Deklaration über zwei Units (https://www.delphipraxis.net/162426-forward-deklaration-ueber-zwei-units.html)

Helmi 22. Aug 2011 17:32

Forward-Deklaration über zwei Units
 
Hallo,

ist es möglich eine Forward-Deklaration zu machen, für eine Klasse die in einer anderen Unit deklariert ist?

Also folgendes:

Delphi-Quellcode:
type
  TDatenThread = class;

type
  TMainForm = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    MD_Thread : TDatenThread;
  end;

uses
  ThreadUnit;
TDatenThread wird in ThreadUnit "erzeugt".

In der Zeile
Delphi-Quellcode:
TDatenThread = class;
bekomm ich die Meldung:
Zitat:

[Fehler] MainUnit.pas(18): Typ 'TDatenThread' ist nicht vollständig definiert
Ich habs auch schon mal mit nur einem Type ausprobiert - aber auch das geht nicht.

Geht das denn überhaupt?

Uwe Raabe 22. Aug 2011 17:59

AW: Forward-Deklaration über zwei Units
 
Nein, der Typ muss in einer Unit vollständig deklariert werden. Eventuell kannst du das aber mit einem Interface lösen.

himitsu 22. Aug 2011 18:04

AW: Forward-Deklaration über zwei Units
 
Jupp, die einzige Möglichkeit sind Interfaces oder virtuelle Klassen.

Du erstellst dir das Interface der entsprechenden Klassen virtuell+abstract in der anderen Unit,
leitest dann davon ab und füllst die Klasse mit Leben (Funktionen).

Helmi 22. Aug 2011 18:05

AW: Forward-Deklaration über zwei Units
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1118669)
Nein, der Typ muss in einer Unit vollständig deklariert werden. Eventuell kannst du das aber mit einem Interface lösen.

Mist schade!

Über ein Interface will ich es nicht tun! - Die forward-Deklaration sollte nur zur Schönheit sein....

mkinzler 22. Aug 2011 20:19

AW: Forward-Deklaration über zwei Units
 
Zitat:

Über ein Interface will ich es nicht tun!
Warum nicht?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz