Mam taki prosty kod:
var x: double;
[...]
if x<> ClientDataSet.FieldByName('MyField').AsFloat then
begin
ShowMessage('Wartości są różne');
end;
I oto co ciekawego się dzieje: w zmiennej x jest liczba 0,8. W polu MyField jest również 0,8. Debuger również pokazuje mi takie same wartości. Jednak program wskakuje do fragmentu z ShowMessage. Dlaczego tak się dzieje? Nie bardzo to rozumiem. Przecież x jest typu double, tak samo jak wartość zwracana przez AsFloat.
---------Dodane:---------
Na stronie Embarcadero (dokumentacja) znalazłem takie coś:
http://docwiki.embarcadero.com/Libraries/XE3/en/Data.DB.TField.AsFloat
ale po najechaniu kursorem myszy na "AsFloat" w kodzie, Delphi podpowiada mi, że jest to typ "System.Extended". Niestety, użycie zmiennej typu Extended nic nie zmienia.
Używam Delphi 2010 Architect.