AGB  ·  Datenschutz  ·  Impressum  







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

TreeView - NodeExists Funktion ?

Ein Thema von moelski · begonnen am 20. Dez 2008 · letzter Beitrag vom 21. Dez 2008
Antwort Antwort
Seite 2 von 2     12   
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: TreeView - NodeExists Funktion ?

  Alt 20. Dez 2008, 17:10
Zitat von moelski:
So nachdem ich mein Löschen erweitert habe und alles auf NIL setze und auch rekursiv lösche gehts nun


Zitat von moelski:
Delphi-Quellcode:
:
    Node.Data := NIL;
    TNodeInfo(Node.Data).Free;
:

:
  Node := NIL;
  Node.Free;
:
Kannst du mal bitte erklären, was das für Aktionen sind? Für mich sind die sinnfrei. Mal abgesehen von dem verwendeten exit und der komischen While-Schleife, die zwar refursiv arbeitet, aber niemals prüft, ob Node überhaupt noch existiert. Hast du überhaupt mal mit deiner Routine den letzten Node in deiner Struktur gelöscht?
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#12

Re: TreeView - NodeExists Funktion ?

  Alt 21. Dez 2008, 08:42
Moin !

Zitat:
Kannst du mal bitte erklären, was das für Aktionen sind?
Wenn ich nur mit Delete arbeite hat meine Überprüfung "NODE <> NIL" nicht funktioniert. ´

Zitat:
While-Schleife, die zwar refursiv arbeitet, aber niemals prüft, ob Node überhaupt noch existiert
Also ich habe sie getestet und die While Schleife arbeitet hervorragend. Man kann einzelne Elemente löschen aber auch ganze Treestrukturen.

Zitat:
ob Node überhaupt noch existiert
Warum sollte ich das auch tun. Die While Schleife selber prüft auf die Existenz von Child Nodes.

Zitat:
Hast du überhaupt mal mit deiner Routine den letzten Node in deiner Struktur gelöscht?
Ja das geht hervorrangend.

Das Exit am Anfang muss sicher nicht sein. Da gebe ich dir Recht. Aber es schadet auch nicht ...
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: TreeView - NodeExists Funktion ?

  Alt 21. Dez 2008, 17:21
Ok, wenn das alles geht, dann ist ja alles gut.

Ich hatte eigentlich immer gedacht, dass ich einen Zeiger, der auf NIL zeigt nicht freigeben kann. Aber man lernt ja nie aus. Bei der Schleife hatte ich eigentlich gedacht nochmal zu prüfen, ob sie vielleicht auch mal beendet werden muss, falls dort nämlich zufällig mal kein Node mit weiteren Kindern vorhanden ist. Ich vermute auch mal, das ein Speichertest da einiges ans Tageslicht bringen würde. Aber wenn augenscheinlich die gewünschte Funktion vorhanden ist, dann wird wohl doch "alles gut" sein.

Naja, war ein Versuch auf garantiert vorhandene Problemstellen aufmerksam zu machen.
Nichts für ungut...
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#14

Re: TreeView - NodeExists Funktion ?

  Alt 21. Dez 2008, 18:26
Wie sollte die Funktion denn deiner Meinung nach aussehen?
Nur weil sie so funktioniert muss sie ja nicht korrekt sein.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: TreeView - NodeExists Funktion ?

  Alt 21. Dez 2008, 22:44
Habe deine Schleife jetzt erst richtig verstanden, bleiben noch die NIL-Stellen...
Delphi-Quellcode:
procedure Node_Delete(Node : TTreeNode);
var NodeObject:TObject;
begin
  if assigned(Node) then begin
    while Node.HasChildren do
      Node_Delete(Node.Item[0]);
    {Free the class}
    NodeObject:=Node.Data;
    if assigned(NodeObject) then
      NodeObject.Free;
    {Delete the node}
    Node.Delete;
  end;
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 00:30 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