Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Systemvorausetzungen von XML? (https://www.delphipraxis.net/98539-systemvorausetzungen-von-xml.html)

gsh 28. Aug 2007 20:51


Systemvorausetzungen von XML?
 
Hi Leute

Hab da mal ne frage.
Also bei mir funktioniert mein programm ganz fein.
Nur bei einem Kollegen stürzt des Programm nach ausführen dieser Codezeile ab:
Delphi-Quellcode:
XMLDocument := TXMLDocument.Create(Application);
So nun liegt natürlich die Vermutung nahe das er XML nicht richtig oder gar nicht installiert hat.

nutze die untis XMLIntf und XMLDoc (wenn des wichtig ist)

Also was genau muss da sein das XML funktioniert?

mkinzler 28. Aug 2007 21:00

Re: Systemvorausetzungen von XML?
 
Kommt auf die XML-Software an.

gsh 28. Aug 2007 21:03

Re: Systemvorausetzungen von XML?
 
und was heißt des genau?

mkinzler 28. Aug 2007 21:05

Re: Systemvorausetzungen von XML?
 
Wenn die Units auf die MS-Implementierung aufsetzen, brauchst du diese (diese benötigt glaube ich mind. Win2000)

SirThornberry 28. Aug 2007 21:06

Re: Systemvorausetzungen von XML?
 
wenn er alle windows-updates unter xp installiert hat sollte es bei ihm auch funktionieren. ansonsten ist msxml vorraussetzung. Eine alternative wäre die Verwendung von omnixml oder anderen alternativen xml-componenten.

gsh 28. Aug 2007 21:08

Re: Systemvorausetzungen von XML?
 
hab meinem kollegen des installieren lassen
MSXML 4.0 SP2 - Deutsch.msi
funkt trotzdem nicht

mkinzler 28. Aug 2007 21:09

Re: Systemvorausetzungen von XML?
 
Achtung es gibt verschiedene XML-Parser von Microsoft MSXML 3, MSXML 4, ...

gsh 28. Aug 2007 21:14

Re: Systemvorausetzungen von XML?
 
und welchen nutze ich wenn ich diese units benutze? XMLIntf und XMLDoc

mkinzler 28. Aug 2007 21:15

Re: Systemvorausetzungen von XML?
 
Da musst du mal in die Sourcen schauen.

gsh 28. Aug 2007 21:21

Re: Systemvorausetzungen von XML?
 
aha und wo soll ich da was finden?

gibt es eine möglichkeit einfach ne dll mitzuschleppen oder es generell ins programm einzubinden?

mkinzler 28. Aug 2007 21:26

Re: Systemvorausetzungen von XML?
 
Alternative XML-Implementationen:
http://www.philo.de/xml/
http://sourceforge.net/projects/tpxmlpartner/
http://saxforpascal.sourceforge.net/saxdom.html

gsh 28. Aug 2007 21:43

Re: Systemvorausetzungen von XML?
 
kann ich dir direkt integrieren?
taugen sie den was?

mkinzler 28. Aug 2007 21:44

Re: Systemvorausetzungen von XML?
 
Ja die kannst du direkt integrieren.
Zitat:

taugen sie den was?
Kommt auf die Anforderungen an

gsh 28. Aug 2007 21:50

Re: Systemvorausetzungen von XML?
 
Zitat:

Zitat von mkinzler
Kommt auf die Anforderungen an

naja können sie halt alle sachen die man so braucht?
attribute und so ein zeug

welche von den drei kannst du empfehlen?

mkinzler 28. Aug 2007 21:52

Re: Systemvorausetzungen von XML?
 
Die TP Implenentierung uist recht einfach, Sax ist sehr verbreitet. Aber ich arbeite selten mit XML, deshalb kann ich dir nicht zu einem Raten.

Muetze1 28. Aug 2007 22:14

Re: Systemvorausetzungen von XML?
 
Für einfache Dinge und kleinen Sachen kann ich da nochmal meine XMLLib erwähnen...

mkinzler 28. Aug 2007 22:15

Re: Systemvorausetzungen von XML?
 
Zitat:

Zitat von Muetze1
Für einfache Dinge und kleinen Sachen kann ich da nochmal meine XMLLib erwähnen...

Wie konnte ich die nur vergessen...

Muetze1 28. Aug 2007 22:36

Re: Systemvorausetzungen von XML?
 
Zitat:

Zitat von mkinzler
Wie konnte ich die nur vergessen...

Hmm, ja, keine Ahnung - aber ich glaube ich habe schön länger nichts mehr überwiesen für's Werbetrommel rühren... :wink:

gsh 29. Aug 2007 15:48

Re: Systemvorausetzungen von XML?
 
Was heißt für kleine sachen?
Was kann es denn nicht was es normallerwieße können sollte?

Muetze1 29. Aug 2007 16:36

Re: Systemvorausetzungen von XML?
 
Zitat:

Zitat von gsh
Was heißt für kleine sachen?
Was kann es denn nicht was es normallerwieße können sollte?

Sie ist nicht explizit auf Geschwindigkeit optimiert oder auf den Umgang mit grossen Datenmengen (obwohl ich hier auf Arbeit XML Dateien um 16 MB mit ihr verarbeite) und Namespaces, XLST, DTD, etc wird nicht unterstützt. Dafür hat man auch wieder Freiheiten und kann auch mal Dateien einlesen und verarbeiten die sich nicht an den Standard halten.

Namespaces etc werden einfach mit im Knotennamen abgelegt, etc. Einlesen und verarbeiten kann man sie trotzdem.

gsh 31. Aug 2007 10:41

Re: Systemvorausetzungen von XML?
 
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
---------------------------

Sidorion 31. Aug 2007 12:55

Re: Systemvorausetzungen von XML?
 
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.

gsh 31. Aug 2007 13:07

Re: Systemvorausetzungen von XML?
 
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?

shmia 31. Aug 2007 13:44

Re: Systemvorausetzungen von XML?
 
Zitat:

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;

gsh 31. Aug 2007 17:58

Re: Systemvorausetzungen von XML?
 
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?

gsh 1. Sep 2007 15:49

Re: Systemvorausetzungen von XML?
 
*push*

Bernhard Geyer 1. Sep 2007 15:52

Re: Systemvorausetzungen von XML?
 
Zitat:

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.

gsh 1. Sep 2007 16:03

Re: Systemvorausetzungen von XML?
 
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 :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 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