Ver Mensaje Individual
  #2  
Antiguo 13-09-2012
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Reputación: 20
movorack Va camino a la famamovorack Va camino a la fama
Hola elarys

Lo que puedo entender es que quieres generar un XML a partir de una clase que haz creado.

De casualidad ahorita estoy trabajando en un proyecto donde debo llevar a XML valores de un componente que contiene una o varias TCollection y en algunos casos TCollection dentro de TCollection.

Probé tu solución y si sucede que al llegar a la TCollection no encuentra ninguna información. Leí un poco antes de contestarte y al parecer delphi no sabe exactamente como leer tu TElarysCollection (Me imagino que habrás creado un calse heredada de TCollection) y por eso la salta sin ofrecer ningun resultado. (Si entendí mal agradecería que alguien pueda aclararnos porque no lee el cntenido de la TCollection)

Esto es lo que obtuve al ejecutar tu funcion

Código:
<KplGenPlan>
<CanEjecuciones>0</CanEjecuciones>
<CodDefi>KNMPLDMO</CodDefi>
<CodPlan>KNMPLDMO_PL001</CodPlan>
<CodProg>KNmPldmo</CodProg>
<KplDbConnection>
<KplDbBdeParams>
<Database>
<AliasName>Kactus7</AliasName>
<Connected>True</Connected>
<DatabaseName>DBKactus</DatabaseName>
<DriverName></DriverName>
<Exclusive>False</Exclusive>
<HandleShared>False</HandleShared>
<KeepConnection>True</KeepConnection>
<LoginPrompt>True</LoginPrompt>
<Name>DtbKactus</Name>
<StringList>
</StringList>
<ReadOnly>False</ReadOnly>
<SessionName>Default</SessionName>
<Tag>0</Tag>
<TransIsolation>tiReadCommitted</TransIsolation>
</Database>
<DatabaseName>DBKactus</DatabaseName>
<Driver>KDBDrvOracle</Driver>
<Password>digital</Password>
<ShowLoginForm>True</ShowLoginForm>
<Username>Kactus</Username>
</KplDbBdeParams>
<Connected>True</Connected>
<Name>KplDbConn</Name>
<Tag>0</Tag>
<TipoConnecion>KDtcBDE</TipoConnecion>
</KplDbConnection>
<Estado>kplPlanEstInac</Estado>
<FinalizacionValor>kplFinProgNoValid</FinalizacionValor>
<FormString>FrmNmPldmo</FormString>
<Name>KplGenPlan</Name>
<NombrePlan></NombrePlan>
<KplNotificacion>
<Activo>True</Activo>
<Email>sdasd</Email>
<StringList>
</StringList>
<Titulo>sadasdasd</Titulo>
</KplNotificacion>
<Observacion></Observacion>
<KplProgramacion>
<FechaEjecucion>41182,8333333333</FechaEjecucion>
<FechaFinal>41143,6895889468</FechaFinal>
<FechaInicio>41144</FechaInicio>
<FrecuenciaDiaNum>0</FrecuenciaDiaNum>
<FrecuenciaDiaVar>kplDiaVarUltDiaMes</FrecuenciaDiaVar>
<FrecuenciaTipo>kplFrecTipMensu</FrecuenciaTipo>
<Hora>0,833333333333333</Hora>
<TieneVencimiento>False</TieneVencimiento>
</KplProgramacion>
<Tag>0</Tag>
<VersionProg>12.6.0.5</VersionProg>
<StringList>
</StringList>
</KplGenPlan>
Y esto es lo que obtengo al ejecutar la función para obtener el XML de mi componente.

Código:
<?xml version="1.0" encoding="utf-8"?>
<KPLPLAN>
	<CODPLAN>KNMPLDMO_PL001</CODPLAN>
	<CODDEFI>KNMPLDMO</CODDEFI>
	<CODPROG>KNmPldmo</CODPROG>
	<VERPROG>12.6.0.5</VERPROG>
	<MAINFORM>FrmNmPldmo</MAINFORM>
	<OBSERVACION/>
	<NOTIFICACION>
		<NOTIFUSR>sdasd</NOTIFUSR>
		<NOTIFTIT>sadasdasd</NOTIFTIT>
		<NOTIFMSG>zczxcz xzczczxc zxczxczxczx

</NOTIFMSG>
	</NOTIFICACION>
	<PROGRAMACION>
		<FECHAS>
			<FECINIC>23/08/2012</FECINIC>
			<FECFINA>%NOVENC</FECFINA>
		</FECHAS>
		<HORA>08:00:00 p.m.</HORA>
		<FRECUENCIA>
			<FRECTIP>%MENSU</FRECTIP>
			<FRECDIA>%ULTDIAMES</FRECDIA>
		</FRECUENCIA>
	</PROGRAMACION>
	<EJECUCION>
		<PARAMETROS>
			<PARAMETRO PARTYPE="%CTRL" PARORDN="1" LABEL="Archivo" OWNER="FrmNmPldmo" OBJREF="EdtFileName" OBJTIP="TEdit">
				<OPCIONES>
					<OPCION LABEL="Texto" PROPTIP="" PROPTIP="Text">C:\Garh\NM\Wrk\KNmPldmo.txt</OPCION>
				</OPCIONES>
			</PARAMETRO>
			<PARAMETRO PARTYPE="%CONS" PARORDN="2" LABEL="Consulta" OWNER="DtmNmPldmo" OBJREF="Qry" OBJTIP="TQuery">
				<OPCIONES>
					<OPCION LABEL="SQL" PROPTIP="" PROPTIP="SQL.Text">SELECT * FROM TABLA</OPCION>
				</OPCIONES>
			</PARAMETRO>
			<PARAMETRO PARTYPE="%ACCN" PARORDN="3" LABEL="Aceptar" OWNER="FrmNmPldmo" OBJREF="BitBtnAceptaClick" OBJTIP="TNotifyEvent"/>
		</PARAMETROS>
	</EJECUCION>
</KPLPLAN>
En mi XML tengo un nodo que se llama PARAMETROS y es aquí donde llevo el contenido de las TCollection (Tres. Una para controles, una para acciones y otra para consultas) que en el resultado obtenido con tu función no lo encuentro.

En conclusión porque he dado mucha lora. Sea que quieras generar un XML o no. Lo que te recomiendo es que analices desde dentro de la clase y generes desde allí mismo el resultado que quieres. con una función no tan automatizada y que en determinado momento pueda evaluar tipos de datos internos, variables privadas, etc...

Pos si te es de utilidad, hice las pruebas con Delphi 5
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita