PDA

Ver la Versión Completa : Pasar salidas delphi a xml


friendspark
14-11-2005, 13:09:57
Hola a todos, mi problema es que no se pasar las salidas de mi programa en delphi en modo consola, a xml.

ejem:<Datos hardware>
<datos cpu>....


ejemplo de lo que estoy haciendo:



reg:= TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
if not Reg.OpenKey('HARDWARE\DESCRIPTION\System\CentralProcessor\0', FALSE) then
writeln('Error opening key')
else
begin
writeln(#10#13,'Datos Hardware:');
Writeln('---------------',#10#13);
g:=reg.ReadString('ProcessorNameString');
g:=Trim(g);
writeln('Procesador.................',g);
g:=reg.ReadString('Identifier');
g:=Trim(g);
writeln('Identificador..............',g);
g:=reg.ReadString('VendorIdentifier');
g:=Trim(g);
writeln('Fabricante.................',g);
reg.CloseKey;

end;




Gracias

friendspark
14-11-2005, 16:28:54
ya lo he solucionado, si alguien quiere saberlo que me lo diga y se lo pongo.


Salu2

jachguate
14-11-2005, 16:40:51
Hola.

He editado tu mensaje para añadir la etiqueta [delphi], que como ves, cambia mucho la presentación del mensaje (y además es requerida para publicar código). Para aclararte sobre su uso, edita tu mensaje.

Hasta luego.

;)

dec
14-11-2005, 18:23:56
Hola,



ya lo he solucionado, si alguien quiere saberlo que me lo diga y se lo pongo.

Hombre, yo no creo que sea menester, ya que empezaste tú mismo el Hilo, que nadie te diga nada, para que, si lo has solucionado, como dices, hagas saber cómo y de qué manera. Yo, por ejemplo, como no sabía que lo hubieras solucionado, preparé lo siguiente, por ver si podía ayudarte en algo.


{
Renombra las funciones y/o procedimientos como
mejor te parezca. En fin, seguramente todo esto
puede mejorarse no poco, pero, para el caso, es
posible que sirva como una especie de ejemplo. ;-)
}

program Ejemplo;

{$APPTYPE CONSOLE}

uses
Forms, // Application
ActiveX, // CoInitialize
XMLIntf, // doNodeAutoIndent
XMLDoc; // TXMLDocument

var
// Documento Xml
docXml: TXMLDocument;

// Vamos a inicializar el documento
// XML, determinar alguna opción del
// mismo y establecer su versión y
// añadirle su nodo "raiz".
//
procedure InicializarDocumentoXml;
begin
// Lo siguiente es necesario no sé
// bien porqué, pero, de no utilizar
// esta función nos será requerida.
CoInitialize(nil);

// Creamos el documento XML
docXml := TXMLDocument.Create(Application);

// Alguna opción para el documento
docXml.Options := [doNodeAutoIndent];

// Lo activamos, para poder manejarlo
docXml.Active := true;

// La única versión posible ;)
docXml.Version := '1.0';

// Le añadimos su nodo "raiz"
docXml.AddChild('Configuracion');
end;

// En este procedimiento guardamos
// el documento XML en un archivo,
// y, además, liberamos el objeto
// que hemos utilizado: ya he dicho
// arriba que todo esto puede cam-
// biarse, esto es un ejemplo más
// o menos hecho un tanto deprisa.
//
procedure GuardarDocumentoXml(const archivo: string);
begin
// Guardamos el documento
// en el archivo indicado
docXml.SaveToFile(archivo);
docXml.Free; // Y liberamos
end;

// Escribimos un determinado valor (de tipo string)
// en un nodo del documento XML. Nota que aquí podrían
// hacerse varias cosas, como, lo que hacemos ahora:
// si ya existiera el nodo escribiríamos el valor en
// el mismo, y, solamente si el nodo no existe lo
// crearemos y escribiremos el valor en el mismo.
//
procedure EscribirValorEnDocumentoXml(const clave, valor: string);
var
nodo: IXMLNode;
begin
// Buscamos el nodo determinado por el parámetro "clave"
nodo := docXml.DocumentElement.ChildNodes.FindNode(clave);
// Si el nodo no existe...
if not Assigned(nodo) then
// Lo creamos, sin más
nodo := docXml.DocumentElement.AddChild(clave);
// Para terminar escribimos el valor en el nodo
nodo.Text := valor;
end;

// Aquí comienza la aplicación de tipo "consola"
//
begin
// Inicializamos el XML
InicializarDocumentoXml;

// Escribimos varias claves y valores. Nótese
// que, al escribir el valor siempre en el mismo
// "nodo", en la misma clave, al final en el
// documento se verá reflejado el último valor.
EscribirValorEnDocumentoXml('Clave', 'Valor');
EscribirValorEnDocumentoXml('Clave', 'Valor');
// Este es el valor que tendrá el nodo "Clave".
EscribirValorEnDocumentoXml('Clave', 'Valor2');

// Por último guardamos el documento
// y, recuérdese, liberamos el objeto
// que hemos venido utilizando. ;)
GuardarDocumentoXml('C:\archivo.xml');
end.