![]() |
Zirkuläre Unit Reference
Hi,
ich schreibe gerade einen Quellcodegenerator der aus einer Datenbank eine Mittelschicht erzeugt (oder besser die Grundlage dafür). Für jede Klasse wird eine eigene Unit erzeugt. Beispiel für mein Problem. Tabellen Adresse------<Matchcode Eine Adresse hat N Matchcodes. Ein Matchcode aber immer nur eine Adresse. Lösung für die Zwischenschicht Adresse.Liste_Matchcodes.Matchcode (in Adresse wird in der uses Liste_Matchcodes verwendet, in der uses von List_Matchodes Matchcode) Matchcode.Adresse (in Matchcode wird in der uses Adresse Verwendet) Probleme Ich will die oben beschrieben Funktionalität, aber nicht alle Klassen in eine Unit schreiben. Die Uses müssen im Interface-Bereich stehen da ich die Objekte als Klassenvariablen verwende. Lösungsansätze ![]() Zitat:
![]() Zitat:
|
Re: Zirkuläre Unit Reference
Zitat:
Delphi-Quellcode:
und später richtig deklarieren.
type TKlassenNamen = class;
|
Re: Zirkuläre Unit Reference
So einfach das klingt ich mache es wohl falsch.
Beispiele
Delphi-Quellcode:
Fehlermeldung: Typ list_ADD_MATCHCODE ist nicht vollständig definiert.
unit ADDRESS;
interface uses Classes, DBXpress, SqlExpr, db, SysUtils ,base,sqlparser, datastructs; type list_ADD_MATCHCODE = class; type //*********************** //****Kopf Basisklasse*** //*********************** TADDRESS = class(TBase) .... implementation uses list_ADD_MATCHCODE;
Delphi-Quellcode:
Fehlermeldungen:
unit ADDRESS;
interface uses Classes, DBXpress, SqlExpr, db, SysUtils ,base,sqlparser, datastructs; type type list_ADD_MATCHCODE = class; //*********************** //****Kopf Basisklasse*** //*********************** TADDRESS = class(TBase) .... implementation uses list_ADD_MATCHCODE; Bezeichner erwartet aber Type gefunden. Typ list_ADD_MATCHCODE ist nicht vollständig definiert. [edit=SirThornberry]Zitat-Tags durch Delphi-Tags ersetzt - Mfg, SirThornberry[/edit] |
Re: Zirkuläre Unit Reference
Heißt deine Unit genauso wie der Typ? :gruebel:
Verwendet TAddress die Klasse list_ADD_MATCHCODE oder warum muss list_ADD_MATCHCODE vorher definiert werden? Ich glaub mit einer dritten Unit wäre das lösbar. |
Re: Zirkuläre Unit Reference
Delphi-Quellcode:
Klappt auch nicht sieht aber richtiger aus.
unit ADDRESS;
interface uses Classes, DBXpress, SqlExpr, db, SysUtils ,base,sqlparser, datastructs; type Tlist_ADD_MATCHCODE = class; //*********************** //****Kopf Basisklasse*** //*********************** TADDRESS = class(TBase) .... implementation uses list_ADD_MATCHCODE; Unitname: list_ADD_MATCHCODE Typname: Tlist_ADD_MATCHCODE |
Re: Zirkuläre Unit Reference
Ja, klappen wird das so nicht. Die Declaration muss vollständig im Interfaceteil abgeschlossen werden.
|
Re: Zirkuläre Unit Reference
Dann wäre es ja so richtig:
Delphi-Quellcode:
Bringt aber die Fehlermeldung: Typ list_ADD_MATCHCODE ist nicht vollständig definiert.
unit ADDRESS;
interface uses Classes, DBXpress, SqlExpr, db, SysUtils ,base,sqlparser, datastructs; type Tlist_ADD_MATCHCODE = class; type //*********************** //****Kopf Basisklasse*** //*********************** TADDRESS = class(TBase) .... implementation uses list_ADD_MATCHCODE; |
Re: Zirkuläre Unit Reference
Hallo,
der Ansatz in Beitrag #3 war schon richtig. Du darfst aber nicht Folgendes machen:
Delphi-Quellcode:
sondern Folgendes:
type
TClass1 = class; type TClass2 = class(TObject) FClass1: TClass1; end; TClass1 = class(TObject) FClass2: TClass2; end;
Delphi-Quellcode:
Beachte: Es gibt nur eine Deklaration (ein "type").
type
TClass1 = class; TClass2 = class(TObject) FClass1: TClass1; end; TClass1 = class(TObject) FClass2: TClass2; end; Gruß xaromz |
Re: Zirkuläre Unit Reference
Das entspricht meinem Beitrag 5, funktioniert aber leider auch nicht.
Aber ich weiß jetzt warum, ich hatte bei der deklaration vergessen das alle Klassen von TBase abgeleitet sind. Habe es gerade geändert und es funktioniert.
Delphi-Quellcode:
Vielen Dank euch allen
unit ADDRESS;
interface uses Classes, DBXpress, SqlExpr, db, SysUtils ,base,sqlparser, datastructs; type Tlist_ADD_MATCHCODE = class(TBASE); //*********************** //****Kopf Basisklasse*** //*********************** TADDRESS = class(TBase) .... implementation uses list_ADD_MATCHCODE; |
Re: Zirkuläre Unit Reference
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:54 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