![]() |
Dr. Watson (Runtime) bzw. Access Violation (IDE)
Hallo zusammen,
ich bin frustriert und hoffe auf Hilfe von der Community. :firejump: Vom VirtualTreeView aka VT (von Dipl.-Ing. Mike Lischke) habe ich eine eigene Komponente abgeleitet. Hierbei verwalte ich meine Objekte in einer Baumstruktur ausserhalb von VT und weise diesem nach Erzeugung zu. Wenn es bei dem einem Mal bleibt ist alles OK. Sobald ich meinen Objekt-Baum leere (z.B. N.DeleteChildren) und erneut zuweise, gibt es manchmal in der IDE eine 'Access Violation'-Fehlermeldung und 'Dr. Watson' zur Laufzeit. == System und Software == Delphi 5.0 + Update Pack 1 Windows NT 4.000.1381 + SP 6 == Code-Auszug ==
Delphi-Quellcode:
== Methoden-Aufrufe ==
TMyNode = (TPersistent)
private FChildren: TList FParent: TMyNode; .. procedure SetParent(Value: TMyNode); protected function GetChild(i: Integer): TMyNode; public ... property Parent: TMyNode read FParent write SetParent; property Children[i: Integer]: TMyNode read GetChild; ... end; TMyVT = class(TVirtualStringTree) private FRoot: TMyNode; procedure SetRoot(Value: TMyNode); ... public ... property Root: TMyNode read FRoot write SetRoot; ... end; //== procedure TMyVT.SetRoot(const Value: TMyNode); begin FRoot := Value; if Assigned(FRoot) then begin Clear; // -> bzw. RootNodeCount = 0; RootNodeCount := FRoot.ChildCount; if RootNodeCount > 0 then begin ValidateNode(GetFirst, False); end; end else RootNodeCount := 0; end; //== //== (siehe MVCDemo aus dem Paket 'VirtualTrees') procedure TBizObjViewerAbs.SetFactory(Value: TBizObjFactory); begin if FFactory = Value then Exit; { If we already have a list, break the link to it. } if Assigned(FFactory) then FFactory.Viewer := nil; { Now make a link to the new structure: } FFactory := Value; if Assigned(FFactory) then begin FFactory.Viewer := Self; RootNodeCount := FFactory.Root.ChildCount; if FFactory.Root.ChildCount > 0 then ValidateNode(GetFirst, False); //-- if FAutoSelectFirstVisible then SelectFirstVisible; end else RootNodeCount:=0; end; end; //-- 1: die Children von 'Root' bzw. 'Tree.Root' löschen, neu füllen und zuweisen 2: erneute Erzeugung eines neuen Objekt-Baum und die Zuweisung [1] Beispiel:
Delphi-Quellcode:
bzw.
FPropertyRoot.DeleteChildren;
GenPropertyTree(FPropertRoot, Instance) MyVT.Root = FPropertyRoot;
Delphi-Quellcode:
[2]
FPropertyTree.Viewer := nil;
FPropertyTree.Root.DeleteChildren; GenPropertyTree(FPropertyTree.Root, Instance) MyVT.Tree = FPropertyTree; Z.B.
Delphi-Quellcode:
Vermutung:
FPropertyRoot := TPropertyFilter.Create;
FPropertyTree := TPropertyTree.Create; + die Zuweisung Irgendwie versucht das Programm auf 'tote' Objekt-Referenzen zuzugreifen, Obwohl die Objekte ordentlich freigegeben werden (MyNode.DeleteChildren). Ich bekomme bzw. provoziere folgende Fehlermeldung, wenn ich das Programm-Fenster minimiere, wieder herstelle und anschließend ein paar Klicks betätige. Es passiert auch manchmal, wenn zwischen den laufenden Programmen bzw. neu gestartete gewechselt wird. === Debug-Dialog -> 'Dr. Watson' zur Laufzeit auf anderen Maschinen Die Anweisung "0x004ea7b1" verweist auf Speicher in "0x0000021f". Der Vorgang "read" konnte nicht auf dem Speicher durchgeführt werden. Klicken Sie auf "OK", um die Anwendung zu beenden. Klicken Sie auf "Abbrechen", um die Anwendung zu debuggen. === Event-Monitor Die Open-Prozedur für den Dienst "Appn" in der DLL "pcs_perf.dll" ist fehlgeschlagen. Die Systemleistungsdaten für diesen Dienst werden nicht verfügbar sein. Der zurückgegebene Status-Code ist DWORD 0. ------------------------------------------------------------------------ Ich kann mit diesen Fehlermeldungen nur sehr wenig anfangen Hat jemand eine Idee, um was für einen fatalen Fehler es sich hier handelt ? Ich bin verzweifelt und würde mich auf jeden Hinweis zur Lösung des Problems Danke im Voraus, Jean-Marie [edit=Luckie]Delphi-Tags eingefügt. beim nächsten mal bitte selber machen. Danke. Mfg, Luckie[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz