AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XML crash bei wiederholtem Laden

Ein Thema von TurboMagic · begonnen am 14. Nov 2022 · letzter Beitrag vom 15. Nov 2022
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.825 Beiträge
 
Delphi 12 Athens
 
#1

XML crash bei wiederholtem Laden

  Alt 14. Nov 2022, 13:15
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:
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;
Der gesamte Code ist im Master Branch dieses Projektes zu finden:
https://github.com/MHumm/delphi-code...ge-wizard-plus

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: XML crash bei wiederholtem Laden

  Alt 14. Nov 2022, 13:31
.. hast Du kein coInitialize(nil) aufgerufen?

Das benötigt meines Wissens IXmlDocument und Co.
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.155 Beiträge
 
Delphi 12 Athens
 
#3

AW: XML crash bei wiederholtem Laden

  Alt 14. Nov 2022, 13:33
Wenn man die VCL (TForm) nutzt, dann wurde das CoInitialize für den Hauptthred bereits erledigt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
peterbelow
Online

Registriert seit: 12. Jan 2019
Ort: Hessen
672 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: XML crash bei wiederholtem Laden

  Alt 14. Nov 2022, 16:15
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:
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;
Der gesamte Code ist im Master Branch dieses Projektes zu finden:
https://github.com/MHumm/delphi-code...ge-wizard-plus

Grüße
TurboMagic
Stell sicher, daß all diese IXMLNode-Referenzen auf nil gesetzt werden, bevor LDocument selbst auf nil gesetzt wird bzw. out of scope geht.
Peter Below
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.825 Beiträge
 
Delphi 12 Athens
 
#5

AW: XML crash bei wiederholtem Laden

  Alt 15. Nov 2022, 07:35
Hallo,

habe die jetzt am Ende der Methode auf NIL gesetzt, wird dadurch aber nicht besser.
Gefühlt eher schlechter.

Grüße
TurboMagic
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.825 Beiträge
 
Delphi 12 Athens
 
#6

AW: XML crash bei wiederholtem Laden

  Alt 15. Nov 2022, 07:44
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
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
526 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: XML crash bei wiederholtem Laden

  Alt 15. Nov 2022, 09:14
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?
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.825 Beiträge
 
Delphi 12 Athens
 
#8

AW: XML crash bei wiederholtem Laden

  Alt 15. Nov 2022, 09:21
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...
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.825 Beiträge
 
Delphi 12 Athens
 
#9

AW: XML crash bei wiederholtem Laden

  Alt 15. Nov 2022, 12:28
Problem gelöst. Man sollte keine Interface Referenzen in einer TObjectList<T> speichern. Eine TList<Interfacereferenztyp> tut's jetzt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz