Einzelnen Beitrag anzeigen

friedemann2009

Registriert seit: 10. Feb 2010
49 Beiträge
 
#1

VST: Access Violation bei vst.deletenode

  Alt 23. Okt 2011, 11:39
Moin zusammen,

habe ein kleines Problem und dazu noch nichts sinnvolles gefunden: Ich möchte lediglich in einem VST bestehende Nodes (häufig mit vielen Subnode-Strukturen) löschen. Das mache ich wie folgt:

Delphi-Quellcode:
  vst.BeginUpdate;
  try
    while assigned(node) do
      begin
        if vst.isvisible[node] then
          vst.DeleteNode(node);
        node:= vst.GetNextChecked(node);
      end;
  finally
    vst.EndUpdate;
  end;
Leider erhalte ich manchmal (nicht immer) eine EAccessViolation Fehlermeldung. Warum, verstehe ich nicht bzw. kann den Fehler auch nicht wirklich reproduzieren.

Laut Debugger tritt im VST der Fehler in folgender Funktion auf:

Delphi-Quellcode:
function TBaseVirtualTree.GetNextNoInit(Node: PVirtualNode): PVirtualNode;

// Optimized variant of GetNext, no initialization of nodes is performed (if a node is not initialized
// then it is considered as not being there).

begin
  Result := Node;
  if Assigned(Result) then
  begin
    Assert(Result <> FRoot, 'Node must not be the hidden root node.');

    // If there is no child node try siblings.
    if Assigned(Result.FirstChild) then //########HIER FEHLER######
      Result := Result.FirstChild
    else
    begin
      repeat
        // Is there a next sibling?
        if Assigned(Result.NextSibling) then
        begin
          Result := Result.NextSibling;
          Break;
        end
        else
        begin
          // No sibling anymore, so use the parent's next sibling.
          if Result.Parent <> FRoot then
            Result := Result.Parent
          else
          begin
            // There are no further nodes to examine, hence there is no further visible node.
            Result := nil;
            Break;
          end;
        end;
      until False;
    end;
  end;
end;
Hat jemand eine Idee? - Die Daten werden in OnFreeNode freigegeben.

Danke für Eure Mühe und schöne Grüße zum Sonntag,
Frieder
  Mit Zitat antworten Zitat