VST: anzahl der Root einträge ermitteln ?

Rund um die LCL und andere Komponenten
Antworten
pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

VST: anzahl der Root einträge ermitteln ?

Beitrag von pluto »

Hallo,
mit folgender Funktniern versuche ich zu ermitteln wie viele Haupt Einträge es gibt beispiel:
Test1
Hallo
Test2
Test
Test
Test

jetzt würde es zwei Haupteinträge geben:
Test1 und Test2

Code: Alles auswählen

function GetNilParentCount(vst:TVirtualStringTree):Integer;
var
  z:Integer;
  node:PVirtualNode;
 
begin
  z:=0;
  node:=nil;
  while True do begin
    node:=vst.GetNextSibling(node);
 
    if node <> NIL then begin
      Writeln('OK1');
      if node.Parent = NIL then begin
        inc(z);
      end;
    end
    else begin
      break;
    end;
  end;
  result:=z;
end;

aber leider ist Node immer = nil was mache ich falsch ?
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Alles :)

1. du musst mit der RootNode anfangen und nicht nil
2. du brauchst nicht auf Node.Parent = nil zu prüfen es macht null sinn Node.Parent ist bei nodes der ersten ebene nämlich vst.Rootnode wird also niemals nil sein aussersem gibt GetNextSibling keine kinder nodes zurück
3. einfacher gehts es so:

Node := vst.Rootnode.Fistchild;
while Node^.NextSibling <> nil do
begin
inc(z);
Node := Node^.Nextsibling;
end;
if z > 0 then Result := z+1
else Result := 0;
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Hat prima geklappt, vielen Dank...

Hätte ich auch drauf kommen müssen !

Naja manchmal sieht man den Wald voller Bäume nicht mehr *G*
MFG
Michael Springwald

Antworten