AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zirkuläre Referenz von zwei Klassen vermeiden
Thema durchsuchen
Ansicht
Themen-Optionen

Zirkuläre Referenz von zwei Klassen vermeiden

Ein Thema von Chaosente · begonnen am 2. Jul 2007 · letzter Beitrag vom 4. Jul 2007
Antwort Antwort
Seite 1 von 2  1 2      
Chaosente

Registriert seit: 20. Aug 2006
80 Beiträge
 
#1

Zirkuläre Referenz von zwei Klassen vermeiden

  Alt 2. Jul 2007, 21:57
Also cih hab zwei klassen, und jede braucht die andere für sich selbst:

Klasse 1:
Delphi-Quellcode:
type
  TKKPlayer = class
  private
  FName: string;
  FColor: TColor;
  FID: integer;
  FScore: integer;
  FHandleList: array of TIDShape;
  FHeartBeat: TTimer;
  FAI: boolean;
  procedure OnHeartBeat(Sender: TObject);
  public
  constructor Create(name: string; Color: TColor; ID: integer; AI: boolean);
  property PlayerName: string read FName write FName;
  property PlayerColor: TColor read FColor write FColor;
  Property PlayerID: integer read FID write FID;
  property PlayerScore: integer read FScore write FScore;
  property Heartbeat: TTimer read FHeartbeat write FHeartbeat;
  property AI: boolean read FAI write FAI;
  procedure AddToHandle(a:TIDShape);
  end;
Klasse 2:
Delphi-Quellcode:
type
  TIDShape = class(TShape)
  private
    FYID: integer;
    FXID: integer;
    FOwned: boolean;
    FOwnedBy: TKKPlayer;
    FValue: integer;
  public
    property YID: integer read FYID write FYID;
    property XID: integer read FXID write FXID;
    property Owned: boolean read FOwned write FOwned;
    property OwnedBy: TKKPlayer read FOwnedby write FOwnedBy;
    property Value: integer read FValue write FValue;
  end;

Ich hab nur leider keine ahnung wie ich es so arangieren kann, dass ich es nciht zirkulär aufbaue... hat jemand ne ahnung wie ich das machen kann?
  Mit Zitat antworten Zitat
luka

Registriert seit: 10. Aug 2006
Ort: Cottbus
33 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Zirkuläre Referenz von zwei Klassen vermeiden

  Alt 2. Jul 2007, 22:10
Versuch es einmal hiermit:
TIDShape = class; Den Rest findest Du in der Delphi-Hilfe, da solltest Du unbedingt einmal reinschauen.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Zirkuläre Referenz von zwei Klassen vermeiden

  Alt 2. Jul 2007, 22:10
Liegen die Klassen in der gleichen Unit?

Wenn ja, geht das so:

Delphi-Quellcode:
TClass1 = class;

TClass2 = class
protected
  class1: TClass1;
end;

TClass1 = class
protected
  class2: TClass2;
end;
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Chaosente

Registriert seit: 20. Aug 2006
80 Beiträge
 
#4

Re: Zirkuläre Referenz von zwei Klassen vermeiden

  Alt 4. Jul 2007, 16:46
Wenn ich einfach
type TIDShape = class; diesen teil vor meine code setze, dann sagt er

[Fehler] KKObjects.pas(8): E2086 Typ 'TIDShape' ist nicht vollständig definiert
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Zirkuläre Referenz von zwei Klassen vermeiden

  Alt 4. Jul 2007, 16:55
Zeig mal deine Deklaration
Markus Kinzler
  Mit Zitat antworten Zitat
Chaosente

Registriert seit: 20. Aug 2006
80 Beiträge
 
#6

Re: Zirkuläre Referenz von zwei Klassen vermeiden

  Alt 4. Jul 2007, 16:57
Hier:
Delphi-Quellcode:
type TIDShape = class;

type
  TKKPlayer = class
  private
  FName: string;
  FColor: TColor;
  FID: integer;
  FScore: integer;
  FHandleList: array of TIDShape;
  FHeartBeat: TTimer;
  FAI: boolean;
  procedure OnHeartBeat(Sender: TObject);
  public
  constructor Create(name: string; Color: TColor; ID: integer; AI: boolean);
  property PlayerName: string read FName write FName;
  property PlayerColor: TColor read FColor write FColor;
  Property PlayerID: integer read FID write FID;
  property PlayerScore: integer read FScore write FScore;
  property Heartbeat: TTimer read FHeartbeat write FHeartbeat;
  property AI: boolean read FAI write FAI;
  procedure AddToHandle(a:TIDShape);
  end;

type
  TIDShape = class(TShape)
  private
    FYID: integer;
    FXID: integer;
    FOwned: boolean;
    FOwnedBy: TKKPlayer;
    FValue: integer;
  public
    property YID: integer read FYID write FYID;
    property XID: integer read FXID write FXID;
    property Owned: boolean read FOwned write FOwned;
    property OwnedBy: TKKPlayer read FOwnedby write FOwnedBy;
    property Value: integer read FValue write FValue;
  end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Zirkuläre Referenz von zwei Klassen vermeiden

  Alt 4. Jul 2007, 16:59
Lass mal die ganzen überflüssigen Types weg:
type
Delphi-Quellcode:
  TIDShape = class;

  TKKPlayer = class
 ...
  end;

  TIDShape = class(TShape)
...
Markus Kinzler
  Mit Zitat antworten Zitat
Chaosente

Registriert seit: 20. Aug 2006
80 Beiträge
 
#8

Re: Zirkuläre Referenz von zwei Klassen vermeiden

  Alt 4. Jul 2007, 16:59
hui warum sind die überflüssig?

geht nciht deklaration erwartet...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Zirkuläre Referenz von zwei Klassen vermeiden

  Alt 4. Jul 2007, 17:02
Weil sich das type anders wie typedef in C in Delphi auf den Abschnitt und nicht auf die folgende Deklaration bezieht
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Zirkuläre Referenz von zwei Klassen vermeiden

  Alt 4. Jul 2007, 17:02
alle "type"s bis auf das erste bitte ersatzlos streichen.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:26 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