AGB  ·  Datenschutz  ·  Impressum  







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

VST betsimmten Node ansprechen

Ein Thema von youuu · begonnen am 11. Jun 2009 · letzter Beitrag vom 12. Jun 2009
Antwort Antwort
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#1

VST betsimmten Node ansprechen

  Alt 11. Jun 2009, 17:36
Hi,

Ich möchte gerne die Nodes in einer Schleife ansprechen, jedoch weiß ich nur wie ich den 1. und den 2. Node anspreche.

GetFirst 1. Node
GetFirst.NextSibling 2. Node

jedoch wie mache ich es per Schleife?

Delphi-Quellcode:
For i := 0 to Vst.RootNodeCount -1 do
Begin
  // ??
End;
Steven
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: VST betsimmten Node ansprechen

  Alt 11. Jun 2009, 18:05
Du musst die Schleife zu einer while-Schleife umfunktionieren, dann geht das ziemlich einfach, da du dich von Knoten zu Knoten hangeln kannst
Delphi-Quellcode:
Node := Vst.GetFirstNode;
while Node <> nil do
begin
  // ... Mit Node etwas anstellen ...

  Node := Vst.GetNextSibling(Node);
end;
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#3

Re: VST betsimmten Node ansprechen

  Alt 11. Jun 2009, 18:24
Zitat von jbg:
Du musst die Schleife zu einer while-Schleife umfunktionieren, dann geht das ziemlich einfach, da du dich von Knoten zu Knoten hangeln kannst
Delphi-Quellcode:
Node := Vst.GetFirstNode;
while Node <> nil do
begin
  // ... Mit Node etwas anstellen ...

  Node := Vst.GetNextSibling(Node);
end;
Zitat von jbg:
Du musst die Schleife zu einer while-Schleife umfunktionieren, dann geht das ziemlich einfach, da du dich von Knoten zu Knoten hangeln kannst
Delphi-Quellcode:
Node := Vst.GetFirstNode;
while Node <> nil do
begin
  // ... Mit Node etwas anstellen ...

  Node := Vst.GetNextSibling(Node);
end;
klappt soweit nur wenn Node = "nicht existiert" knallt es bei mir und IDE schreit Zugriffsverletzung.

Edit:

Habe es nun so gelöst.

Delphi-Quellcode:
while Node <> nil do
begin
  if VstEmpfaengerGruppe.GetNext(Node) = nil then
    Exit;

  Node := Vst.GetNextSibling(Node);
end;
Steven
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: VST betsimmten Node ansprechen

  Alt 11. Jun 2009, 19:28
Zitat von youuu:
klappt soweit nur wenn Node = "nicht existiert" knallt es bei mir und IDE schreit Zugriffsverletzung.
Wie meinst du das? Wenn mein obiger Code nicht funktionieren würde, dann hätten einige Kunden ein ziemlich großes Problem, und das haben sie definitiv nicht, da der Code schon seit Jahren einwandfrei funktioniert. Wäre auch schlimm wenn GetNextSibling fehlerhaft wäre.
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#5

Re: VST betsimmten Node ansprechen

  Alt 11. Jun 2009, 20:59
So war das nicht gemeint, natürlich funktioniert er nur es tritt beim letzten Aufruf eine Exception mit Zugriffsverletzung auf.
Steven
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

Re: VST betsimmten Node ansprechen

  Alt 11. Jun 2009, 21:04
Zitat von youuu:
es tritt beim letzten Aufruf eine Exception mit Zugriffsverletzung auf.
Welche VirtualTreeView Version hast du denn? Oder löscht du oder fügst du neue Knoten innerhalb der Schleife hinzu?
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#7

Re: VST betsimmten Node ansprechen

  Alt 11. Jun 2009, 21:43
Zitat von jbg:
Zitat von youuu:
es tritt beim letzten Aufruf eine Exception mit Zugriffsverletzung auf.
Welche VirtualTreeView Version hast du denn? Oder löscht du oder fügst du neue Knoten innerhalb der Schleife hinzu?
Nein ich füge keine hinzu, allerdings ignoriere ich den 1. Node


Delphi-Quellcode:
while Node <> nil do
begin
  if VstEmpfaengerGruppe.GetNext(Node) = nil then
    Exit;

  Node := Vst.GetNextSibling(Node);
end;
so geht es allerdings.
Steven
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#8

Re: VST betsimmten Node ansprechen

  Alt 11. Jun 2009, 23:47
Du kannst auch mal IterateSubTree (oder so ähnlich?) ausprobieren.
Uli Gerhardt
  Mit Zitat antworten Zitat
generic

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

Re: VST betsimmten Node ansprechen

  Alt 12. Jun 2009, 00:07
getNext() und GetNextSibling() sind unterschiedliche Funktionen mit unterschiedlichen Zweck!
Mir leuchtet auch nicht ein was dein Konstrukt bezweckt.
Der Programmfehler kommt eher durch einen Programmfehler und nicht durch den VST.

Das Beispiel von jbg ist richtig und funktioniert.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  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 21:33 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