[RESUELTO] Crear archivo XML con TXMLDocument
Started by
felipe
, Oct 21 2010 04:18 PM
24 replies to this topic
#21
Posted 27 October 2010 - 09:16 AM
#22
Posted 03 November 2010 - 09:35 AM
Después de haber tenido un tiempo abandonado el tema, retorno a el con la solución:
IXMLDocument
Simplemente cambie la declaraciones originales por una variable de este tipo.
Solución instantánea
Saludos!
IXMLDocument
Simplemente cambie la declaraciones originales por una variable de este tipo.
Solución instantánea
Saludos!
#23
Posted 12 May 2011 - 02:12 AM
Buenas,
Os pongo en situación. Una aplicación de uso propio que quiere monitorizar algunas cosas de diferentes localidades. Cada una de esas localidades tendrá asociados diferentes canales, y su estado. Canales puede ser cualquier cosa que tendrá dos estados: Monitorización o Ayuda a la monitorización, y podrá estar activo o inactivo. La cuestión es crear un fichero XML que ayude a gestionarlo.
A ver si alguien inspirado puede saber por qué me da problema de acceso a memoria el siguiente código. En concreto pasa cuando llamo a Escribe_Pueblo después de haber llamado a Create. Se llaman en diferentes formularios.
Un saludo.
Os pongo en situación. Una aplicación de uso propio que quiere monitorizar algunas cosas de diferentes localidades. Cada una de esas localidades tendrá asociados diferentes canales, y su estado. Canales puede ser cualquier cosa que tendrá dos estados: Monitorización o Ayuda a la monitorización, y podrá estar activo o inactivo. La cuestión es crear un fichero XML que ayude a gestionarlo.
A ver si alguien inspirado puede saber por qué me da problema de acceso a memoria el siguiente código. En concreto pasa cuando llamo a Escribe_Pueblo después de haber llamado a Create. Se llaman en diferentes formularios.
delphi
TXMLWriter = class (TObject) private Doc: TXMLDocument; public Constructor Create;overload; procedure Escribe_Canal(Localidad: Integer; idCanal: Integer; nombreCanal: String; Tipo: String; Activo:Boolean); procedure Escribe_Pueblo(idLocalidad: Integer;Localidad: String; Estado:String); procedure Cierra(); end;
delphi
constructor TXMLWriter.Create; var Root: IXMLNode; begin inherited; Doc := TXMLDocument.Create(nil); Doc.Active:=True; Doc.AddChild('config'); Doc.DocumentElement.AddChild('hola'); Doc.DocumentElement.AddChild('adios'); Doc.Active:=False; end;
delphi
procedure TXMLWriter.Escribe_Pueblo(idLocalidad: Integer;Localidad: String; Estado:String); var Def, Propiedad, Pueblo: IXMLNode; begin Pueblo := Doc.DocumentElement.AddChild('localidad'); Pueblo.Attributes['id']:=IntToStr(idLocalidad); Propiedad := Pueblo.AddChild('nombre'); Propiedad.Text := Localidad; Propiedad := Pueblo.AddChild('estado'); Propiedad.Text := Estado; end;
Un saludo.
#24
Posted 17 May 2011 - 11:03 AM
Problema solucionado.
Se trataba de que a la hora de llamar al constructor de TXMLDocument, hay que pasarle por parámetros un objeto, como por ejemplo, Form1, que se hará cargo de la gestión de memoria correspondiente al objeto en cuestión.
Esto se debe, por lo que he conseguido leer, a que la clase en cuestión implementación del objeto COM MSXML. Ahora toca investigar más a fondo sobre COM.
Un saludo.
Se trataba de que a la hora de llamar al constructor de TXMLDocument, hay que pasarle por parámetros un objeto, como por ejemplo, Form1, que se hará cargo de la gestión de memoria correspondiente al objeto en cuestión.
Esto se debe, por lo que he conseguido leer, a que la clase en cuestión implementación del objeto COM MSXML. Ahora toca investigar más a fondo sobre COM.
Un saludo.
#25
Posted 01 July 2011 - 04:47 PM
Tal ves esto funcione tambien es una manera de hacer DatBinding parecida a como lo hace Java con su libreria Jaxb y apuesto e slo mejor que existe:
http://angelsw.wordp...-estilo-delphi/
http://angelsw.wordp...-estilo-delphi/