Ver Mensaje Individual
  #2  
Antiguo 12-01-2024
Delphi01 Delphi01 is offline
Miembro
 
Registrado: nov 2015
Ubicación: Barcelona,España
Posts: 68
Reputación: 9
Delphi01 Va por buen camino
Cita:
Empezado por _Io Ver Mensaje
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."
Responder Con Cita