![]() |
Record Vordefinieren...
Hi,
Ich weiss nicht genau wie ich mein Problem erklären soll... :gruebel: Es geht im Prinzip darum dass ich zwei Typen habe (Array & Record) die sich gegenseitig als untertyp haben sollen... beispiel:
Delphi-Quellcode:
nun kommt aber leider der Fehler "Bezeichner redefiniert" wo er ja auch irgendwie recht hat...Aber irgendwie muss es doich gehen...
TNode = record end; //Platzhalter...
TItem = (i1,i2,i3); TItems = array [TItem] of TNode; TNode = record //<<-- Fehler Count: Integer; HasSubs: Boolean; Case Boolean of True: (Sub: TItems); False: (); end; end; BTW: funzt der Variant so? Ist so Standardmäßig Sub nicht vorhanden? |
Re: Record Vordefinieren...
Das geht nicht! Rekursive verschachtelungen sind aus gutem Grund verboten. Das gäbe in Nullzeit unendlichen hohen Speicherverbrauch ;)
Nimm besser Pointer auf Records oder, noch besser, gleich Klassen. |
Re: Record Vordefinieren...
Zitat:
Wenn es mit dem Variant so klappt wie ich will dann nicht.... Und ich habe ehrlich gesagt da jetzt keinn lust für die 2 sachen mit klassen oder pointern rumzumachen :-/ geht es nicht irgendwie so? (Wobei du prinzipiell ja recht hast...) PS: ausserdem ist es ja auch nicht wirklich antwort auf meine frage. |
Re: Record Vordefinieren...
Nein. Der Record alloziert(...) direkt Platz für alles, inklusive größtem Teil der Variant-Sektion, die nun mal rekursive verschachtelungen definitiv einschließen..
|
Re: Record Vordefinieren...
Zitat:
dann also doch klassen.... |
Re: Record Vordefinieren...
Zitat:
Delphi-Quellcode:
PNode = ^TNode;
TNode = record Count: Integer; HasSubs: Boolean; Case Boolean of True: (Sub: PNode); False: (); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:28 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