Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Treeview - Eine Ebene durchlaufen

81 views
Skip to first unread message

Christian Holzhauer

unread,
Dec 17, 2001, 6:15:07 AM12/17/01
to
Hallo NG,

ich habe folgendes Problem. Ich moechte im Treeview die Texte alle Eintraege
(der folgenden Ebene) unterhalb des markierten Eintrags durchlaufen. mit
AnzUnter := Treeview.Selected.count habe ich die Anzahl der vorhandenen
Untereintraege.
Wenn ich nun meine Schleife von : i : = 0 to AnzUnter -1 do laufen lasse,
mit der Bedingung
Text : = Treeview1.Items[i].Text; dann kommt Mist heraus.
Die Schleife funktioniert zwar, zeigt mir aber nicht die Untereintraege des
markierte Eintrags an, sonder verzeigt auf weitere Untereintraege.

Für nenn Vorschlag waere ich dankbar - Christian


Marian Aldenhoevel

unread,
Dec 17, 2001, 8:08:29 AM12/17/01
to
Hi,

> Wenn ich nun meine Schleife von : i : = 0 to AnzUnter -1 do laufen
> lasse, mit der Bedingung

> Text : = Treeview1.Items[i].Text;

> dann kommt Mist heraus.

Dann kommt nicht Mist heraus, sondern die Texte der ersten AnzUnter Knoten,
wenn man den Baum von oben her mit allen Verzweigungen betrachtet.

Du möchtest nicht TreeView1.Items[i], also global den i-ten Knoten
(übrigens eine Performance-Katastrophe), sondern
TreeView1.Selected.Items[i], also das i-te Kind des selektierten Knotens
haben.

Ciao, MM
--
Marian Aldenhövel, Hainstraße 8, 53121 Bonn
http://www.marian-aldenhoevel.de
"Wussten Sie, daß schon der Biss eines einzigen
Pferdes eine Hornisse töten kann?"

Christian Holzhauer

unread,
Dec 17, 2001, 8:44:56 AM12/17/01
to

> Du möchtest nicht TreeView1.Items[i], also global den i-ten Knoten
> (übrigens eine Performance-Katastrophe), sondern
> TreeView1.Selected.Items[i], also das i-te Kind des selektierten Knotens

Hallo Marian,

übrigens eine Performance-Katastrophe..., warum?

Gruß Christian


Marian Aldenhoevel

unread,
Dec 17, 2001, 11:09:22 AM12/17/01
to
Hi,

> übrigens eine Performance-Katastrophe..., warum?

Ich meinte damit den globalen Zugriff via Index.

Um den global 100sten Knoten von oben zu finden, und genau das tut dieser
Zugriff per Index ja, muss der Baum rekursiv depth-first durchsucht werden.
Diese Operation benötigt lineare Zeit.

Das ist noch nicht schlimm.

Schlimm wird es, wenn man es in einer Schleife aufruft, die hintereinander
über mehrere Knoten mit aufeinanderfolgenden Index-Werten iteriert.

for i:=1 to 100 do TreeView.Items[i].Text:=IntToStr(i);

Das fängt nämlich in jeder Iteration der for-Schleife _wieder_ oben an zu
suchen. So wird aus der harmlosen O(n)-Aktion ein O(n^2).

Und das ist schon recht schlimm.

Richtig schlimm wird es, wenn man sich klarmacht, daß die ganze Schleife in
linearer Zeit laufen könnte, wenn man nur auf den Index-Zugriff verzichtet
und sich stattdessen jeweils zum nächsten Knoten weiterhangelt. Die Methode
dazu heißt überraschenderweise GetNextNode :-).

Ciao, MM
--
Marian Aldenhövel, Hainstraße 8, 53121 Bonn
http://www.marian-aldenhoevel.de

"Wipe Info uses hexadecimal values to wipe files. This
provides more security than wiping with decimal values."

Werner Weiß

unread,
Dec 17, 2001, 11:27:32 AM12/17/01
to
Hi Christian!

// BEGIN CODE
ParentNode := TTreeView.Selected;
Node := ParentNode.GetFirstChild;
while (Node <> nil) do
begin
Text := Node.Text;
// ShowMessage(Text);
Node := ParentNode.GetNextChild(Node);
end;

// END CODE

CU,
Werner

"Christian Holzhauer" <Christian...@Gif-ac.com> schrieb im
Newsbeitrag news:9vkk3s$367$1...@swifty.westend.com...

Michael Dahm

unread,
Dec 17, 2001, 11:45:42 AM12/17/01
to
> "Wipe Info uses hexadecimal values to wipe files. This
> provides more security than wiping with decimal values."

So ein Blödsinn kann doch nur wieder einer dieser elenden Programmierer
erdacht haben,
wo doch jeder weiß, das nur ein Wipe mit Octal-Zahlen wirklich sicher ist.

Im Ernst wo hast Du denn das her?
Eigene Kreativität - dann gelungen!... oder doch ein ernst gemeintes
Argument? Und wenn ja - kann man da noch mehr solche Killer-Argumente
finden?

Viele Grüße
Michael


Marian Aldenhoevel

unread,
Dec 17, 2001, 12:29:36 PM12/17/01
to
Hi,

> Im Ernst wo hast Du denn das her?

Gefunden hat es Bruce Schneier von Counterpane, seines Zeichens
Sicherheits- und Cryptoguru (BlowFish, TwoFish), und Autor des
"Crypto-Gram": http://www.counterpane.com.

Die Quelle ist die Werbung zu Norton SystemWorks 2002.

> oder doch ein ernst gemeintes Argument?

Werbung ist immer eine ernste Sache. Aber da das Produkt seiner Zeit noch
um ein paar Tage voraus ist, kann die Aussage ja vielleicht noch wahr
werden...

Ciao, MM
--
Marian Aldenhövel, Hainstraße 8, 53121 Bonn
http://www.marian-aldenhoevel.de

Marian Aldenhoevel

unread,
Dec 17, 2001, 12:31:06 PM12/17/01
to
Hi,

Zu früh auf Senden gedrückt.

> Und wenn ja - kann man da noch mehr solche Killer-Argumente
> finden?

Der andere Kandidat für die neue Signatur war:

"If you smash a computer to bits with a mallet, that appears to count as
encryption in the state of Nevada."

Ciao, MM
--
Marian Aldenhövel, Hainstraße 8, 53121 Bonn
http://www.marian-aldenhoevel.de

Mike Lischke

unread,
Dec 17, 2001, 3:21:33 PM12/17/01
to
> Node := ParentNode.GetNextChild(Node);

Das wird nicht richtig funktionieren. Damit bekommst du in der Schleife das Kind vom Kind vom
Kind... Besser doch GetNextSibling.

Ciao, Mike
--
Homepage: http://www.lischke-online.de
Delphi Unicode Center: http://www.delphi-unicode.net
GraphicEx: http://www.lischke-online.de/Graphics.html
Virtual Treeview: http://www.lischke-online.de/VirtualTreeview.html
Joint Endeavor of Delphi Innovators (JEDI): www.delphi-jedi.org

Werner Weiß

unread,
Dec 17, 2001, 4:55:13 PM12/17/01
to
Hi Mike!

Da muss ich dir leider wiedersprechen!!

CU,
Werner


"Mike Lischke" <pub...@lischke-online.de> schrieb im Newsbeitrag
news:9vlk4f$fv7nh$1...@ID-81910.news.dfncis.de...

Werner Weiß

unread,
Dec 17, 2001, 4:58:56 PM12/17/01
to
Hi Mike!

Da muss ich dir leider widersprechen!!

CU,
Werner


"Mike Lischke" <pub...@lischke-online.de> schrieb im Newsbeitrag
news:9vlk4f$fv7nh$1...@ID-81910.news.dfncis.de...

Werner Weiß

unread,
Dec 17, 2001, 5:58:47 PM12/17/01
to
Hi Mike!

Hab gesehen dass du eine TTreeView-Komponente (Virtual Treeview) geschrieben
hast!
Funktioniert der logisch richtige Lösungsansatz in deiner Komponente nicht??

CU,
Werner

--
Ing. Werner Weiß <wj...@aon.at>
<http://wjjw.net> <http://www.ac-tech.at>

"Mike Lischke" <pub...@lischke-online.de> schrieb im Newsbeitrag
news:9vlk4f$fv7nh$1...@ID-81910.news.dfncis.de...

Mike Lischke

unread,
Dec 18, 2001, 1:05:07 PM12/18/01
to
> Funktioniert der logisch richtige Lösungsansatz in deiner Komponente nicht??

:-) Schon, doch, ja, nur habe ich irgendwie übersehen, dass da steht: ParentNode.GetNextChild. Mein
Treeview Auge hat nur Node.GetNextChild gelesen, sorry.

Werner Weiß

unread,
Dec 18, 2001, 6:00:39 PM12/18/01
to
"Mike Lischke" <pub...@lischke-online.de> schrieb im Newsbeitrag
news:9vo0gp$gf3uh$1...@ID-81910.news.dfncis.de...

> > Funktioniert der logisch richtige Lösungsansatz in deiner Komponente
nicht??
>
> :-) Schon, doch, ja, nur habe ich irgendwie übersehen, dass da steht:
ParentNode.GetNextChild. Mein
> Treeview Auge hat nur Node.GetNextChild gelesen, sorry.

Kein Problem!

CU,
Werner

PS: Deine TTreeView-Komponente (Virtual TreeView) ist echt toll!

Michael Dahm

unread,
Dec 20, 2001, 12:17:10 PM12/20/01
to
> "If you smash a computer to bits with a mallet, that appears to count as
> encryption in the state of Nevada."

Dann spricht man wahrscheinlich von 1200gr Schlüssellänge.


0 new messages