Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit Klassen (https://www.delphipraxis.net/94164-problem-mit-klassen.html)

Dawn87 17. Jun 2007 13:55


Problem mit Klassen
 
Hallo,

ich habe ein Problem:

Und zwar habe ich 2 Klassen (TProject und TTopic). Die 2. Klasse (TTopic) erwartet im Konstuktor eine Objekt vom Typ TProject (von der 1. Klasse).

Die beiden Klassen liegen in unterschiedlichen Units. Leider teilt mir der Compiler mit, dass er in der Unit der Klasse TTopic keinen Typ TProject kennt.

Die Unit der Klasse TProject habe ich eingebunden:

uProject:

Delphi-Quellcode:
unit uProject;

interface

uses Classes, ComCtrls;

implementation

type
  TProject = class(TObject)
  private
  public
    constructor Create(tvwSynchron: TTreeView);
  end;

constructor TProject.Create(tvwSynchron: TTreeView);
begin

end;

end.
uTopic:
Delphi-Quellcode:
unit uTopic;



interface

uses uProject;

implementation

type
  TTopic = class(TObject)
  private
  public
    constructor Create(Project: TProject); // <-- Fehler: Undefinierter Bezeichner "TProject"
  end;

constructor TTopic.Create(Project: TProject);
begin

end;

end.
Kann mir da jemand weiterhelfen?

Grüße
Stefan

Die Muhkuh 17. Jun 2007 13:57

Re: Problem mit Klassen
 
Hi,

Du musst die Klasse TProject nach Interface verschieben:

Delphi-Quellcode:
unit uProject;

interface

uses Classes, ComCtrls;

type
  TProject = class(TObject)
  private
  public
    constructor Create(tvwSynchron: TTreeView);
  end;

implementation

constructor TProject.Create(tvwSynchron: TTreeView);
begin

end;

end.

marabu 17. Jun 2007 13:58

Re: Problem mit Klassen
 
Hallo Stefan,

die Unit uTopic sieht von der Unit uProject nur das, was dort im interface deklariert wurde.

Grüße vom marabu

Dawn87 17. Jun 2007 13:59

Re: Problem mit Klassen
 
Hallo!

Vielen Dank, hat funktioniert.

Wo ist der Unterschied zwischen dem Interface und Implementation Teil?

Grüße
Stefan

mkinzler 17. Jun 2007 14:02

Re: Problem mit Klassen
 
Zitat:

Wo ist der Unterschied zwischen dem Interface und Implementation Teil?
Im Interface sthet alles, was nach außen bekannt gegeben wird, im Implemtierungsteil die "privaten" Dinge, die nur innerhalb der Unit bekannt sind.

Dawn87 17. Jun 2007 14:08

Re: Problem mit Klassen
 
Achso,

danke!

Grüße
Stefan

Dawn87 17. Jun 2007 14:31

Re: Problem mit Klassen
 
Hallo,

hab noch eine Frage zu den Klassen:

Ist es möglich, dass sich beide Klassen kennen ohne dass ich die Meldung "Zirkuläre Unit-Referenz" bekomme und ohne dass diese in der selben Unit liegen? Ich möchte aus Gründen der Übersichtligkeit diese in separaten Units haben.

Grüße
Stefan

mkinzler 17. Jun 2007 14:35

Re: Problem mit Klassen
 
Entweder geminsam genutzes in 3. Unit auslagern, oder einmal im Interface und einmal unter Implementation


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