Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML Element-Text unverändert einlesen (https://www.delphipraxis.net/145144-xml-element-text-unveraendert-einlesen.html)

dammi 24. Dez 2009 14:11


XML Element-Text unverändert einlesen
 
Hallo Leute,

und zwar versuche ich gerade Texte von Elementen einzulesen und in einem TRichEdit Feld anzuzeigen.
Das funktioniert soweit ohne Probleme, allerdings würde ich gerne den einzulesenden Text "unberührt" einlesen, also so wie er in den jeweiligen Element steht.

Das Problem hierbei sind Zeichen wie &amp, &lt, &gt etc ..
Diese stehen im XML Dokument genau so drin, also z.B. "&amp das ist ein Text".
Will ich diesen Text nun als String in das TRichEdit Feld hinzufügen steht dort dann "& das ist ein Text".

Jemand eine Tipp für mich wie er das als "&amp" einliest und vorallem auch wieder als "&amp" speichert?



Dank schon im Voraus & noch ein Frohes Fest,
dammi

himitsu 26. Dez 2009 21:20

Re: XML Element-Text unverändert einlesen
 
ich sag jetzt einfach mal: das geht nicht.

dieses gehört zum XML-Format und wird von jedem ordentlichem XML-Parser automatisch entschlüsselt.

wenn du das wirklich als Text haben willst, dann muß es so kodiert werden:
"& das ist ein Text"

dammi 26. Dez 2009 22:07

Re: XML Element-Text unverändert einlesen
 
Alles klar, dann muss ich mal schauen ob TrueCrypt das dann auch lesen kann.

Aber noch eine andere Frage:
Und zwar erstelle ich ja das Objekt (Interface) vom Typ IXMLDocument und lade die XML Datei mit z.B.
Delphi-Quellcode:
XMLFile := newIXMLDocument;
XMLFIle.LoadFromFile('blablub.xml');
XMLFile.Active := true;
Mich würde noch interessieren wie ich später im Programm prüfen kann, ob dieses Objekt aktuell noch existiert.
Also wie man prüfen kann ob die Referenz auf das Objekt noch existiert und diese vll auch löschen kann.

himitsu 27. Dez 2009 00:21

Re: XML Element-Text unverändert einlesen
 
Wenn XMLFile vom Typ IXMLDocument (nicht TXMLDocument) ist, dann wird das Dokument freigegeben, wenn alle Varialben, welche dieses Objekt enthielten entweder NIL sind oder nun ein anderes Dokument enthalten oder nicht mehr existieren (z.B. lokale Prozedurvariblen, nachdem die Prozedur verlassen wurde).

Global prüfen kann man es nicht.

sx2008 27. Dez 2009 00:48

Re: XML Element-Text unverändert einlesen
 
Man kann die Anzahl der Referenzen auslesen.
Dazu wird der interne Referenzzähler um eins erhöht und dann wieder erniedrigt.
Delphi-Quellcode:
interfacevar._AddRef;
anzahl := interfacevar._Release;
In manchen Fällen kann der ausgelesene Referenzzähler auch gefaked sein und liefert so immer 1.

dammi 27. Dez 2009 15:28

Re: XML Element-Text unverändert einlesen
 
Na super :P

Dann werd ich einfach auf das "Active" des erstellten Objekts prüfen (welches ich beim erstellen immer auf true setze) und mit der Exception weiterarbeiten.
Also
Delphi-Quellcode:
try
  if XMLFile.Active = true then begin
  ....
  end;

except
  on E: Exception do begin
  ....
  end;
end;
Da dürfte ich ja dann auf der sicheren Seite sein hoffe ich :P

himitsu 27. Dez 2009 18:45

Re: XML Element-Text unverändert einlesen
 
Wenn du eh eine Variable mit diesem Interface drinnen hast, dann existiert auch noch das Objekt
und man müßte eigentlich nicht extra nochmal nachprüfen.

Bei Interfaces ist es standardmäßig so, daß sie automatisch freigegeben, wenn die letzte Referenz auf sie freigegeben wurde, also wenn es keine Variablen mehr gibt, wo sie noch drin stecken.


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