AGB  ·  Datenschutz  ·  Impressum  







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

VirtualTreeView: Kompletten Subtree kopieren?

Ein Thema von JPSelter · begonnen am 23. Jun 2006 · letzter Beitrag vom 27. Jun 2006
Antwort Antwort
Benutzerbild von JPSelter
JPSelter

Registriert seit: 24. Jan 2005
Ort: Attendorn/Sauerland
235 Beiträge
 
Turbo Delphi für Win32
 
#1

VirtualTreeView: Kompletten Subtree kopieren?

  Alt 23. Jun 2006, 12:27
Bietet VTV eine Möglichkeit einen kompletten Subtree zu kopieren und an einen anderen Knoten anzuhängen? Oder muss ich das zu Fuss programmieren. Das dürfte einiges an Aufwand sein fürchte ich.
=JPSelter=

Visit www.ditonovia.de for our breathtaking movies: Herrin der Ringe (Fantasy 2005), Hemisphere (Science-Fiction 2004) & Braveknife (Parodie 2001) and more...
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#2

Re: VirtualTreeView: Kompletten Subtree kopieren?

  Alt 23. Jun 2006, 12:32
vst.copyto(...); biete sich da an.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von JPSelter
JPSelter

Registriert seit: 24. Jan 2005
Ort: Attendorn/Sauerland
235 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: VirtualTreeView: Kompletten Subtree kopieren?

  Alt 23. Jun 2006, 12:34
Ah, sehr gut, hatte schon Angst, man müsste das alles selber machen. Geil dieses VTV
=JPSelter=

Visit www.ditonovia.de for our breathtaking movies: Herrin der Ringe (Fantasy 2005), Hemisphere (Science-Fiction 2004) & Braveknife (Parodie 2001) and more...
  Mit Zitat antworten Zitat
Benutzerbild von JPSelter
JPSelter

Registriert seit: 24. Jan 2005
Ort: Attendorn/Sauerland
235 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: VirtualTreeView: Kompletten Subtree kopieren?

  Alt 23. Jun 2006, 14:56
Bekomme leider eine Exception mit dem Hinweis, dass ich nicht genügend RAM hätte... RAM-Verbrauch wächst dabei auf 1,3GB... ist aber unwichtig, die Exception selbst ist das Problem, nicht der RAM.

Also, die Zeile lautet nun

Form1.VST1.CopyTo(Node,currentNode,amInsertAfter,true); Node ist der Quell-Knoten mit all seinen Children, currentNode der gerade neu eingehängte und der Ziel-Knoten, der all die anderen Children bekommen soll, das InsertAfter sollte stimmen, und true weil ich nur die Children des Quell-Knotens haben will. Aber wo ist nun der Fehler? Im Debugger sehe ich, dass beide Nodes auf einen Speicherbereich zeigen, also definiert sind.
=JPSelter=

Visit www.ditonovia.de for our breathtaking movies: Herrin der Ringe (Fantasy 2005), Hemisphere (Science-Fiction 2004) & Braveknife (Parodie 2001) and more...
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#5

Re: VirtualTreeView: Kompletten Subtree kopieren?

  Alt 23. Jun 2006, 16:42
vieleicht eine endlos schleife in der sich copyto verfängt.
kannst du ausschliessen das die "zu kopierenden" wieder vom selben prozess kopiert werden?

Code:
1
+-2
  +-ziel
knoten 1 soll nach ziel kopiert werden -> geht nicht weil du endlos viele knoten kopieren würdest.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von JPSelter
JPSelter

Registriert seit: 24. Jan 2005
Ort: Attendorn/Sauerland
235 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: VirtualTreeView: Kompletten Subtree kopieren?

  Alt 23. Jun 2006, 17:02
Bin grad wieder von der Arbeit zu Hause, kanns nun nicht genau verifizieren. Quelle und Ziel sollten eigentlich Schwesterknoten sein, ich muss am Mo nochmal schauen, aber es sah heute korrekt aus. Aber stimmt, eine Endlosschleife würde diesen Speicherüberlauf erklären. Danke für den Tip!
=JPSelter=

Visit www.ditonovia.de for our breathtaking movies: Herrin der Ringe (Fantasy 2005), Hemisphere (Science-Fiction 2004) & Braveknife (Parodie 2001) and more...
  Mit Zitat antworten Zitat
Benutzerbild von JPSelter
JPSelter

Registriert seit: 24. Jan 2005
Ort: Attendorn/Sauerland
235 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: VirtualTreeView: Kompletten Subtree kopieren?

  Alt 27. Jun 2006, 09:39
So, da bin ich wieder. Es ist etwas seltsam mit diesem Fehler. Also erstmal skizziere ich die Baumstruktur:

Delphi-Quellcode:
+ A (Quelle)
  - B
  - C
- D
+ E
  - F
- G (Ziel, hier sollen alle Children von A dran)
Ich will einen neuen Knoten einfügen. Zum Zeitpunkt meines CopyTo hängt der neue Knoten G bereits im Baum. Dann folgt

Form1.VST1.CopyTo(Node,currentNode,amInsertAfter,false); Node ist der Quellknoten (geprüft) und currentNode der Zielknoten (geprüft). Trotzdem kommt die Fehlermeldung, als wenn, wie schon vermutet, irgendwo eine Endlosschleife läuft. Aber die kann ich nirgends sehen.
Dann habe ich mal aus true ein false gemacht, also ChildrenOnly disabled. Das klappt, aber mit seltsamen Endergebnis:

Delphi-Quellcode:
+ A (Quelle)
  - B
  - C
- D
+ E
  - F
+ A (Kopie der Quelle)
  - B
  - C
+ G (eigentliches Ziel)
Er hat zuerst Knoten G korrekt als Ziel erkannt, macht aber eine Kopie von A und hängt diesen an nil an. Aber wieso? Jetzt verstehe ich gar nichts mehr
=JPSelter=

Visit www.ditonovia.de for our breathtaking movies: Herrin der Ringe (Fantasy 2005), Hemisphere (Science-Fiction 2004) & Braveknife (Parodie 2001) and more...
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

Re: VirtualTreeView: Kompletten Subtree kopieren?

  Alt 27. Jun 2006, 10:16
Hallo JPSelter

Zitat von TreeView-Hilfe:
Code:
TVTNodeAttachMode = (
    amNoWhere,       // just for simplified tests, means to ignore the Add/Insert command
    amInsertBefore,  // insert node just before destination (as sibling of destination)
    amInsertAfter,   // insert node just after destionation (as sibling of destination)
    amAddChildFirst, // add node as first child of destination
    amAddChildLast   // add node as last child of destination
  );
Versuche es einmal mit dem Modus amAddChildLast. Wenn du nur die Kind-Knoten kopieren möchtest, mußt du dies eventuell in einer Schleife tun.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von JPSelter
JPSelter

Registriert seit: 24. Jan 2005
Ort: Attendorn/Sauerland
235 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: VirtualTreeView: Kompletten Subtree kopieren?

  Alt 27. Jun 2006, 10:24
Danke Hawkeye! Dein Tip war nicht die Lösung, aber Dein Posting hat mir das Problem direkt vor Augen geführt: Mein amInsertAfter hängt den Quellknoten nicht an mein Target an, sondern versucht einen neuen Knoten NEBEN meinem Zielknoten zu erstellen. Und wenn ChildrenOnly dann true ist, hat er nichts, wohin er es hängen könnte Habe nun amAddChildFirst benutzt und das klingt jetzt auch logisch
=JPSelter=

Visit www.ditonovia.de for our breathtaking movies: Herrin der Ringe (Fantasy 2005), Hemisphere (Science-Fiction 2004) & Braveknife (Parodie 2001) and more...
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:54 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