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
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