AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Record ist nicht vollständig definiert

Ein Thema von gsh · begonnen am 25. Sep 2006 · letzter Beitrag vom 25. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#1

Record ist nicht vollständig definiert

  Alt 25. Sep 2006, 17:47
Hi DPler

Ich habe ein Problem mit dem Code hier:
Delphi-Quellcode:
TAllClientsRecord = record
  NodeName : string;
  Childs : array of TAllClientsRecord; //<-- genau hier
end;
bekomm ich folgende Fehlermeldung:
Zitat:
[Pascal Fehler] U_Haupt.pas(104): E2086 Typ 'TAllClientsRecord' ist nicht vollständig definiert
und ja es ist mir klar das Childs auf sich selber weisst. Ich will nämlich so eine art TreeView system und somit das das Record Childs haben kann die wieder Childs haben können usw.
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Record ist nicht vollständig definiert

  Alt 25. Sep 2006, 17:55
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:
PAllClientsRecord = ^TAllClientsRecord;
TAllClientsRecord = record
  NodeName : string;
  Childs : array of PAllClientsRecord; //<-- genau hier
end;
Bei Klassen geht das mit dem verwenden in sich selbst weil KlassenInstanzen nur Pointer sind.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#3

Re: Record ist nicht vollständig definiert

  Alt 25. Sep 2006, 18:05
oh danke des hab ich nicht bedacht
ich werds gleich mal ausprobieren
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Record ist nicht vollständig definiert

  Alt 25. Sep 2006, 19:34
Hi Alex,

wie wäre es mit Children anstatt von Childs?

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#5

Re: Record ist nicht vollständig definiert

  Alt 25. Sep 2006, 22:12
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
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#6

Re: Record ist nicht vollständig definiert

  Alt 25. Sep 2006, 22:13
Um mal SirTs "dreckige" Pointerlösung zu umgehen: wenn du sowieso einen Baum bastelst, warum nimmst du nicht gleich Klassen und Listen?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Record ist nicht vollständig definiert

  Alt 25. Sep 2006, 22:17
Zitat von Dax:
Um mal SirTs "dreckige" Pointerlösung zu umgehen: wenn du sowieso einen Baum bastelst, warum nimmst du nicht gleich Klassen und Listen?
*zustimm* Ich wollte mit der Pointerlösung nur ausdrücken das es nicht anders geht als mit Pointern (Klassen machen das ja auch so). Bei klassen hat man den Vorteil das man Methoden ins Destroy etc. werfen kann welche dann für das aufräumen sorgen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#8

Re: Record ist nicht vollständig definiert

  Alt 25. Sep 2006, 22:32
hmmm ich hab nur noch nichts mit klassen gemacht.
Muss ich dann da für jeden Child eine eigene Klasse erstellen?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Record ist nicht vollständig definiert

  Alt 25. Sep 2006, 22:35
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#10

Re: Record ist nicht vollständig definiert

  Alt 25. Sep 2006, 22:48
hmm ja schon aber wie mach ich des am besten des es sozusagen unendlich tief hineingehen kann?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  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 22:12 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