![]() |
Record ist nicht vollständig definiert
Hi DPler
Ich habe ein Problem mit dem Code hier:
Delphi-Quellcode:
bekomm ich folgende Fehlermeldung:
TAllClientsRecord = record
NodeName : string; Childs : array of TAllClientsRecord; //<-- genau hier end; Zitat:
|
Re: Record ist nicht vollständig definiert
Dir ist aber schon klar das es eine Recursion wäre wenn das Ginge. Du würdest damit also unendlich viel Speicher benötigen.
Denn deine Struktur enthält sich selbst welche widerum sich selbst enhält welche widerum sich selbst enthält.... Da es sich um ein dynamischen Record handelt ist das natürlich nicht der Fall (aber so schlau scheint der Compiler bei Records nicht zu sein) Du musst an der Stelle mit Pointern arbeiten (typisierte Pointer). Und wenn du dann wirklich ein Unteritem benötigst musst du den Speicher anfordern.
Delphi-Quellcode:
Bei Klassen geht das mit dem verwenden in sich selbst weil KlassenInstanzen nur Pointer sind.
PAllClientsRecord = ^TAllClientsRecord;
TAllClientsRecord = record NodeName : string; Childs : array of PAllClientsRecord; //<-- genau hier end; |
Re: Record ist nicht vollständig definiert
oh danke des hab ich nicht bedacht
ich werds gleich mal ausprobieren :coder: |
Re: Record ist nicht vollständig definiert
Hi Alex,
wie wäre es mit Children anstatt von Childs? Freundliche Grüße vom marabu |
Re: Record ist nicht vollständig definiert
ja ich weiss des die mehrzahl von child children ist aber es war am Anfang ein Child und wenn man andere Programier technische Probleme hat dann schreibt man einfach ein s dazu ohne nachzudenken. Aber egal
|
Re: Record ist nicht vollständig definiert
Um mal SirTs "dreckige" Pointerlösung zu umgehen: wenn du sowieso einen Baum bastelst, warum nimmst du nicht gleich Klassen und Listen? :gruebel:
|
Re: Record ist nicht vollständig definiert
Zitat:
|
Re: Record ist nicht vollständig definiert
hmmm ich hab nur noch nichts mit klassen gemacht.
Muss ich dann da für jeden Child eine eigene Klasse erstellen? |
Re: Record ist nicht vollständig definiert
für jedes Child eine eigene Klasseninstanz. Bei einem Record würdest du es ja genau so machen. Für jedes Child ein Record in deinem Array. Vorteil bei der Klasse ist das du im Destroy einfach die Childs frei geben kannst, diese geben wiederum in ihrem destory ihre childs frei und so weiter. Es ist also bedeutend bequemer und vor allem übersichtlicher.
|
Re: Record ist nicht vollständig definiert
hmm ja schon aber wie mach ich des am besten des es sozusagen unendlich tief hineingehen kann?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 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