AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Systemvorausetzungen von XML?

Systemvorausetzungen von XML?

Ein Thema von gsh · begonnen am 28. Aug 2007 · letzter Beitrag vom 1. Sep 2007
Antwort Antwort
Seite 3 von 3     123
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#21

Re: Systemvorausetzungen von XML?

  Alt 31. Aug 2007, 11:41
So

Hab mir des jetzt mal alles angeschaut doch am sympatischen ist mir OmniXML.
Also hab ich des mir mal eingebunden und ein bissi getestet aber schon bei diesem Code scheitert alles:
Delphi-Quellcode:
function XML_Load(XMLFilename : String; VST : TVirtualStringTree) : Boolean;
var
  XMLDocument : TXMLDocument;
begin
  try
    XMLDocument := TXMLDocument.Create;
    try
      try
        if not(FileExists(XMLFilename)) then
        begin
          XMLDocument.LoadXML('<?xml version="1.0"?><List></List>'); //hier
        end
        else XMLDocument.Load(XMLFilename); //oder hier gibt es eine AccessViolation (siehe unten)
      except
        ShowMessage('XML Fehler: Die Datei "'+XMLFilename+'" ist fehlerhaft.');
        Result := false;
        exit;
      end;
      VST.Clear;
      VST.BeginUpdate;
      ShowMessage(XMLDocument.DocumentElement.NodeName);
      VST.EndUpdate;
    finally
      FreeAndNil(XMLDocument); //und hier kann er es nicht freigeben weil des objekt plötzlich nicht mehr verfügbar ist (wieder AccessViolation)
    end;
    Result := true;
  except
    ShowMessage('XML Fehler: Fehler beim Laden des XML Documents');
    Result := false;
  end;
end;
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt - ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 7C911010 in Modul 'ntdll.dll'. Lesen von Adresse 0000001C' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#22

Re: Systemvorausetzungen von XML?

  Alt 31. Aug 2007, 13:55
Also auf den ersten Blick würd ich sagen, dass Du Deine Variable vom Typ IXMLDocument, nicht TXMLDocument deklarieren solltest, weil sonst wired das Ding gleich nach dem Konstruieren wieder freigegeben. Als zweites fällt auf, dass Du das Dokument vor dem einlesen nicht aktiv machst (aber das würde eine andere Ausnahme erzeugen). Falls OmniXML nicht mit interfaces arbeitet, vergiss meinen Post.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#23

Re: Systemvorausetzungen von XML?

  Alt 31. Aug 2007, 14:07
also wenn ich es so mache XMLDocument : IXMLDocument;
dann gibt es kein XMLDocument := IXMLDocument.Create;
ich kann es höchstens so machen XMLDocument := TXMLDocument.Create; dann geht es zwar mal anscheinend ... aber ich kanns nicht freigeben


und warum wird das TXMLDocument objekt gleich nach dem konstruieren wieder freigegeben?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#24

Re: Systemvorausetzungen von XML?

  Alt 31. Aug 2007, 14:44
Zitat von gsh:
ich kann es höchstens so machen XMLDocument := TXMLDocument.Create; dann geht es zwar mal anscheinend ... aber ich kanns nicht freigeben
und warum wird das TXMLDocument objekt gleich nach dem konstruieren wieder freigegeben?
Das ist halt so bei Interfaces; unter Delphi werden diese automagisch vom Compiler freigegeben.

Du solltest die Funktion CreateXMLDoc aus Unit OmniXML verwenden.
Eigentlich hätten die Leute von OmniXML die Klasse TXMLDocument nach dem Keywort "implementation"
deklarieren müssen, damit man gar nicht diesen Fehler machen kann.

Ich habe auch gleich mal deine schlechte Exception-Behandlung berichtigt und
aus der function eine procedure gemacht.
Entweder die procedure läuft erfolgreich durch oder es wird eine Exception mit
aussagekräftiger Fehlermeldung erzeugt.

Delphi-Quellcode:
procedure XML_Load(XMLFilename : String; VST : TVirtualStringTree);
var
  XMLDocument : IXMLDocument; // <=== Interface !!
begin
    XMLDocument := CreateXMLDoc;
  try
    if FileExists(XMLFilename) then
        XMLDocument.Load(XMLFilename)
    else
        XMLDocument.LoadXML('<?xml version="1.0"?><List></List>');
   except
      on E:Exception do
      begin
         E.Message := 'XML Fehler beim Laden der Datei "'+XMLFilename+'"'#13#10+
            E.Message;
         raise;
      end;
   end;
   VST.Clear;
   VST.BeginUpdate;
   ShowMessage(XMLDocument.DocumentElement.NodeName);
   VST.EndUpdate;
end;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#25

Re: Systemvorausetzungen von XML?

  Alt 31. Aug 2007, 18:58
Hi danke für deine Hilfe jetzt läuft es schon ganz gut
aber mein Memory Manager sagt mir am schluß des ich jetzt speicherleaks habe.
Wie kann ich des jetzt freigeben des objekt?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#26

Re: Systemvorausetzungen von XML?

  Alt 1. Sep 2007, 16:49
*push*
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
16.913 Beiträge
 
Delphi 10.4 Sydney
 
#27

Re: Systemvorausetzungen von XML?

  Alt 1. Sep 2007, 16:52
Zitat von gsh:
Hi danke für deine Hilfe jetzt läuft es schon ganz gut
aber mein Memory Manager sagt mir am schluß des ich jetzt speicherleaks habe.
Wie kann ich des jetzt freigeben des objekt?
Am besten dort nachschauen wo dein Memory-Manager diese Lücken anmeckert
Hellsehen können wir auch nicht wo jetzt genau die Lücken sind.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#28

Re: Systemvorausetzungen von XML?

  Alt 1. Sep 2007, 17:03
ah leute hat sich erledigt

meine dummheit war schuld

hab unten noch einen anderen code kapt zum speichern und da war alles bis aufs erstellen des documents auskommentiert ... naja danke auf jedenfall jetzt läufts prima
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf