Witam
Wydaje się, że to jest prosty kod. Przechodzę po utworzonym wcześniej drzewie i jeśli wiersz spełnia warunek, zostaje usunięty. Następnie przechodzę do kolejnego liścia GetNextLeaf(Node)
, jednak tutaj otrzymuję błąd AV. I nie zależnie czy będzie to GetNext(Node)
lub GetNextSibling(Node)
błąd zawsze występuje. Detektor to EurekaLog7.
Nie mam pojęcia skąd to się wzięło. Może błąd jest w samym VirtualTreeView. Używam wersji: 5.5.2: (10 Nov 2014).
Najprawdopodobniej źle chodzę po gałęzi. Czy tutaj obowiązuje poruszanie się "od dołu", poprzez GetPreviousLeaf(Node)
?
var
Node: PVirtualNode;
Data: PTreeData;
begin
Node := VST.GetFirstLeaf;
while not (Node = nil) do
begin
Data := VST.GetNodeData(Node);
if Data.FImage <> 0 then VST.DeleteNode(Node);
Node := VST.GetNextLeaf(Node); // <------- AccessViolation ---------
Continue;
//if ... then
end;
end;
Doradźcie coś, bo już tracę zmysły myślenia :)