![]() |
Fehler: TYP noch nicht vollständig deklariert
Hi,
ich habe versucht folgenden Typ zu deklarieren:
Delphi-Quellcode:
Nun bekomme ich den Fehler: "TCatData wurde noch nicht vollständig deklariert". Mir ist grade entfallen, wie ich Typen vordefinieren kann.
type
TCatData = record Caption: string; ImageIndex: integer; SubCats: array of TCatData; <-- Fehler: TCatData wurde noch nicht vollständig deklariert end; Helft mir auf die Sprünge bitte :D |
Re: Fehler: TYP noch nicht vollständig deklariert
Das geht gar nicht. Der Compiler will herausbekommen wie gross das record ist und das ist bei so einer rekursiven Deklaration unmoeglich.
Es geht das du Zeiger auf das record benutzen kannst. Diese kann man vor der record Deklaration im gleichen type Bereich deklarieren. Es ginge wenn der Compiler ein Mehrpass-compiler waere, aber ein Pascal-Compiler ist nun mal traditionell ein Einpass-Compiler. |
Re: Fehler: TYP noch nicht vollständig deklariert
Äh... geht das überhaupt? Ich meine, Subdata ist vom Typ TCatData. Und Subdata ist in TCatData deklariert.
//Edit: Rekursiv... Das Wort hatte ich gesucht. :wall: Na ja, Robert war schneller... :stupid: |
Re: Fehler: TYP noch nicht vollständig deklariert
Okey, vielen Dank:
Delphi-Quellcode:
so geht es ..
type
PCatData = ^TCatData; TCatData = record Caption: string; ImageIndex: integer; SubCats: array of PCatData; end; //Edit: Und ja, es soll sogar rekursiv sein, weil ich eine rekursive Funktion mit den Datensätzen füttere :D |
Re: Fehler: TYP noch nicht vollständig deklariert
Hallo,
mit forward geht es auch
Delphi-Quellcode:
type
TCatData = record; forward; TCatData = record Caption: string; ImageIndex: integer; SubCats: array of TCatData; end; Heiko |
Re: Fehler: TYP noch nicht vollständig deklariert
Zitat:
Gruß Hawkeye |
Re: Fehler: TYP noch nicht vollständig deklariert
Hallo,
war aber nur so getippert *zugeb* Bei Klassen würde das gehen, bei Records wohl nicth. Wieder ein Grund, gleich Klassen zu benutzen ... ;)
Delphi-Quellcode:
Aber in diesem Fall würde ich eh TList (oder einen Abkömmling)
type
TCatData = class; TCatData = class Caption: string; ImageIndex: integer; SubCats: array of TCatData; end; anstatt des arrays benutzen, auch wenn Pointer das vereinfachen. Heiko |
Re: Fehler: TYP noch nicht vollständig deklariert
Danach suchte ich .. habe dann aber auch gemerkt, dass es nur mit Objecten geht. Der ganze Record hat nur den Sinn intern eine Struktur darzustellen, welche dann später auf einen VirtualStringTree übertragen wird.
Da lohnte es sich nicht extra mit Objecten zu arbeiten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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