[RESUELTO] Crear archivo XML con TXMLDocument
Comenzado por
felipe
, oct 21 2010 04:18
24 respuestas en este tema
#21
Escrito 27 octubre 2010 - 09:16
#22
Escrito 03 noviembre 2010 - 09:35
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
Escrito 12 mayo 2011 - 02:12
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
Escrito 17 mayo 2011 - 11:03
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
Escrito 01 julio 2011 - 04:47
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/