Ver Mensaje Individual
  #6  
Antiguo 16-03-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Justo hace poco con el compañero Al Gonzalez discutiamos sobre las ambiguedades que se puedan presentar en el codigo fuente

En este caso la clase tiene una variable privada Flg_DatasetOK de tipo Boolean

Código Delphi [-]
  TINMOVTR = class(TComponent)
  private
   ...
    Flg_DatasetOK :Boolean;
   ...

Luego, esta el metodo CrearDataSets que recibe por referencia un parametro Boolean tambien llamado Flg_DatasetOK


Código Delphi [-]
procedure TINMOVTR.CrearDataSets(var Flg_DatasetOK:Boolean);
begin
  intramst      := TClientDataSet.Create(self);
  insaldo_frm   := TClientDataSet.Create(nil);
  insaldo_to    := TClientDataSet.Create(nil);
  inmov_frm     := TClientDataSet.Create(self);
  InMov_to      := TClientDataSet.Create(self);
  PEDMST        := TClientDataSet.Create(self);


  Flg_DatasetOK := True;
end;

La linea subrayada es una asignacion ambigua; en Delphi estos "conflictos" se resuelven segun el orden de las referencias; en este caso, la referencia mas "cercana" es el parametro Flg_DatasetOK que recibe el metodo CrearDataSets ; por lo tanto, la variable de instancia Flg_DatasetOK queda "oculta"; la unica manera posible de referenciarla es indicandolo explicitamente, usando Self

Código Delphi [-]
  Self.Flg_DatasetOK

En definitiva, Self.Flg_DatasetOK no es el parametro pasado por referencia Flg_DatasetOK

Simplemente es una observacion, aunque no trivial; basicamente tu variable de instancia Flg_DatasetOK nunca se actualiza, y estos detalles no los informa el compilador
Responder Con Cita