Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Reihenfolge der Klassen / Untereinander bekannt machen? (https://www.delphipraxis.net/116294-reihenfolge-der-klassen-untereinander-bekannt-machen.html)

Errraddicator 26. Jun 2008 14:18


Reihenfolge der Klassen / Untereinander bekannt machen?
 
Hiho.

bin jetzt neu in Delphi und hab folgendes Problem.
Ich hab ein Programm das Daten aus einer Datenbank anzeigt.

Das Ganze ist so gestaltet dass ich 1 Anforderungsfenster habe das x Datenfenster aufmacht.
Jedes Datenfenster hat dabei 1 Fred der die Daten liest.

Jetzt habe ich das Problem, dass das Datenfenster den Fred kennen muss (um ihn zu starten, abzufragen, etc) und der Thread muss das Datenfenster kennen (für die Darstellung).
Wie bekomme ich das aber in der Deklaration hin, denn wenn ich erst den Thread und dann das Fenster definiere kennt der Fred logischerweise die Fensterklasse nicht und umgekehrt kennt das Fenster den Fred nicht.

Sprich Variante/Fehler 1:
Delphi-Quellcode:
class TDataReader = class(TThread);
// ...
public:
  display: TfrmData; // hier kennt er das Fenster logischerweise nicht

class TfrmData = class(TForm);
// ...
private:
  dataReader: TDataReader;
Variante / Fehler 2:
Delphi-Quellcode:
class TfrmData = class(TForm);
// ...
private:
  dataReader: TDataReader; // hier kennt er logischerweise den Fred nicht

class TDataReader = class(TThread);
// ...
public:
  display: TfrmData;

Ich habe versucht, das Problem zu umgehen indem ich im Fred "display" nicht als "TfrmData" sondern als Typ "TForm" deklariere.
Dann wollte ich während der Verarbeitung das Ganze umparsen, aber dann bekomme ich die Fehlermeldung, TForm sei nich mit TfrmData kompatibel.


Hat jemand eine Idee, wie ich das Problem lösen kann?


Danke im Voraus

cu Patrick

spaxxn 26. Jun 2008 14:23

Re: Reihenfolge der Klassen / Untereinander bekannt machen?
 
Du musst sogenannte Forwarddeklarationen machen.

Delphi-Quellcode:
TfrmData = class;
TDataReader = class;

TDataReader = class(TThread);
// ...
public:
  display: TfrmData; // hier kennt er das Fenster logischerweise nicht
end;

TfrmData = class(TForm);
// ...
private:
  dataReader: TDataReader;
end;

Cyf 26. Jun 2008 14:23

Re: Reihenfolge der Klassen / Untereinander bekannt machen?
 
Delphi-Quellcode:
type

  class TfrmData = class;

  class TDataReader = class(TThread);
  // ...
  public:
    display: TfrmData; // hier kennt er das Fenster logischerweise nicht
  end;

  class TfrmData = class(TForm);
  // ...
  private:
    dataReader: TDataReader;
  end;
[Edit] Kleinen Fehler beseitigt, Mist da war einer schneller :stupid:
Stichwort dazu ist übrigens Vorwärtsdeklaration.

Errraddicator 26. Jun 2008 14:25

Re: Reihenfolge der Klassen / Untereinander bekannt machen?
 
Ah kuhl, sowas in die Richtung konnt ich mir schon denken, kenn ich ja von C++.
Aber wusste halt nich wie das in Delphi geht. ^^

Danke für die schnelle Antwort. :)

Patrick

spaxxn 26. Jun 2008 14:26

Re: Reihenfolge der Klassen / Untereinander bekannt machen?
 
Zitat:

Zitat von Cyf
Delphi-Quellcode:
type

  class TfrmData = class(TForm);

  class TDataReader = class(TThread);
  // ...
  public:
    display: TfrmData; // hier kennt er das Fenster logischerweise nicht
  end;

  class TfrmData = class(TForm);
  // ...
  private:
    dataReader: TDataReader;
  end;

Wat soll das bringen ausser nem Compiler-Error?

Cyf 26. Jun 2008 15:47

Re: Reihenfolge der Klassen / Untereinander bekannt machen?
 
Habs vor deinem Post schon korrigiert, das muss ohne die Vererbung sein, bei der Vorwärtsdeklaration, dachte eigentlich ich habs schnell genug korrigiert, ehe es Schaden anrichtet. :wink:

Delphi-Quellcode:
TfrmData = class;


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