![]() |
XML crash bei wiederholtem Laden
Hallo,
kleines böses Problem in 11.2. Der nachfolgende Code wird einmal erolgreich aufgerufen und die XML Datei geladen. Später wird dieser Code erneut aufgerufen aber es crasht mit einer Schutzverletzung. Dabei ist es unerheblich ob die selbe Datei nochmal geladen werden soll oder eine andere. Wo crasht es? Irgendwo nach dem .Active Aufruf.
Delphi-Quellcode:
Der gesamte Code ist im Master Branch dieses Projektes zu finden:
procedure TProjectSettings.LoadFromXML(const FileName: string);
var LDocument: IXMLDocument; LUnitTestFiles, LSourceFiles, LOutput, LMisc, LNode: IXMLNode; SourceFileName : string; IsSelected : Boolean; begin Assert(FileName <> '', 'No file name for the XML file specified'); FFileName := FileName; LDocument := TXMLDocument.Create(FFileName); LDocument.Options := [doNodeAutoIndent]; LDocument.Active := true; ![]() Grüße TurboMagic |
AW: XML crash bei wiederholtem Laden
.. hast Du kein coInitialize(nil) aufgerufen?
Das benötigt meines Wissens IXmlDocument und Co. Grüße Klaus |
AW: XML crash bei wiederholtem Laden
Wenn man die VCL (TForm) nutzt, dann wurde das CoInitialize für den Hauptthred bereits erledigt.
|
AW: XML crash bei wiederholtem Laden
Zitat:
|
AW: XML crash bei wiederholtem Laden
Hallo,
habe die jetzt am Ende der Methode auf NIL gesetzt, wird dadurch aber nicht besser. Gefühlt eher schlechter. Grüße TurboMagic |
AW: XML crash bei wiederholtem Laden
Hallo,
ok, ich glaube ich weiß jetzt warum das passiert. Muss die Nutzung der Klasse komplett auf Interface umstellen. SOnst wird's irgendwo zu früh frei gegeben. Grüße TurboMagic |
AW: XML crash bei wiederholtem Laden
Ich sehe keinen Fehler in obigem Code. Das wird hier so tausendfach benutzt. Wo tritt den die Schutzverletzung genau auf?
Ausserdem IXMLDocument ist schon ein Interface? |
AW: XML crash bei wiederholtem Laden
Naja, an manchen Stellen im Programm wurde eine Interface Referenz benutzt und an anderen noch eine Objektreferenz.
Das verursacht jedoch Probleme mit der Referenzzählung bzw. das wird dann zu früh freigegeben. Das ist jetzt gelöst, habe jetzt aber an einer anderen Stelle ein Problem. Das ist dann aber ein Fall für später... |
AW: XML crash bei wiederholtem Laden
Problem gelöst. Man sollte keine Interface Referenzen in einer TObjectList<T> speichern. Eine TList<Interfacereferenztyp> tut's jetzt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03: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