Tan solo para eliminar posibilidades. ¿No tienes declarados D y H dos veces? Por ejemplo, si en el evento OnCreate tienes:
Código Delphi
[-]
procedure TForm1.FormCreate(Sender: TObject);
var
D, H: Real;
begin
...
D := SaldoDebe;
H := SaldoHaber;
Calc_Saldo;
end;
En este caso, Los D y H que ve Calc_Saldo son distintos de los que ve OnCreate.
Bye