Cita:
Empezado por _Io
Hola.
Antes de nada Felicitar el Nuevo Año a todos y felicitar a este foro por la ayuda que aporta.
Llevo unos cuantos años con Delphi, tengo cierta soltura, pero quizás me he encasillado en lo que funciona y no he estudiado más. La cosa que ahora con lo nuevo de VERIFACTU, estoy viendo código de compañeros que no entiendo y es por eso si me podéis ayudar a comprenderlo.
Código Delphi [-]
PersonaFisicaJuridicaType = class(TRemotable)
private
FNIF: NIFType;
FNIF_Specified: boolean;
FIDOtro: IDOtroType;
FIDOtro_Specified: boolean;
public
destructor Destroy; override;
published
property NombreRazon: TextMax120Type read FNombreRazon write FNombreRazon;
property NIF: NIFType Index (IS_OPTN) read FNIF write SetNIF stored NIF_Specified;
property IDOtro: IDOtroType Index (IS_OPTN) read FIDOtro write SetIDOtro stored IDOtro_Specified;
procedure PersonaFisicaJuridicaType.SetNIF(Index: Integer; const ANIFType: NIFType);
begin
FNIF := ANIFType;
FNIF_Specified := True;
end;
function PersonaFisicaJuridicaType.NIF_Specified(Index: Integer): boolean;
begin
Result := FNIF_Specified;
end;
procedure PersonaFisicaJuridicaType.SetIDOtro(Index: Integer; const AIDOtroType: IDOtroType);
begin
FIDOtro := AIDOtroType;
FIDOtro_Specified := True;
end;
function PersonaFisicaJuridicaType.IDOtro_Specified(Index: Integer): boolean;
begin
Result := FIDOtro_Specified;
end;
Mi dudas son:
* por que dos propiedades diferentes tienen el mismo índiceIndex (IS_OPTN)?
* Cual es la función de stored que lee el valor de una función?,no se podría haber puesto directamente la variable?
Espero haberme explicado bien.
Muchas Gracias.
|
Respuesta ChatGpt:
"El código que has proporcionado parece ser una definición de clase en Delphi. Vamos a analizar tus dudas punto por punto:
1. ¿Por qué dos propiedades diferentes tienen el mismo índice "Index (IS_OPTN)"?
En Delphi, el índice "Index (IS_OPTN)" se utiliza para indicar que una propiedad es opcional, es decir, puede estar presente o no. En este caso, las propiedades "NIF" y "IDOtro" tienen el mismo índice porque ambos son marcados como opcionales. De esta manera, se puede verificar fácilmente si una propiedad ha sido especificada o no. Si la propiedad está especificada, se debe utilizar su valor; de lo contrario, se utilizan valores predeterminados o se toman otras acciones.
2. ¿Cuál es la función de "stored" que lee el valor de una función? ¿No se podría haber puesto directamente la variable?
La palabra clave "stored" en Delphi se utiliza en las propiedades publicadas para permitir controlar si un valor de propiedad debe ser almacenado o no durante la serialización, como por ejemplo, al guardar o cargar la configuración de la aplicación. Al utilizar "stored", se puede establecer una condición o una función que determine si el valor de la propiedad debe guardarse o no.
Se usa una función en lugar de la variable directamente para proporcionar una lógica adicional en la determinación de si almacenar o no el valor de la propiedad. Esto permite personalizar el comportamiento de la propiedad en función de ciertas condiciones o reglas. En el código que has proporcionado, las funciones "NIF_Specified" y "IDOtro_Specified" se utilizan para verificar si las propiedades "NIF" y "IDOtro" han sido especificadas, respectivamente, y así decidir si guardar sus valores durante la serialización.
Espero que esta explicación aclare tus dudas. Si tienes alguna otra pregunta, no dudes en preguntar."