Witam.
Mam nastepujace pytanie:
Czy w delphi jest odpowiednik funkcji isNaN ?? Na stronie delphibasics.co.uk znalazlem artykul mowiacy, ze takowa funkcja znajduje sie w module Math, ale mimo zalaczenia tego modulu dostaje komunikat isNaN - undeclared identifier. Prosze o pomoc w odnalezieniu lub ew. zasymulowaniu tej funkcji. Z gory dziekuje.
Pozdrawiam.
To dziwne. Nastepujacy kodzik testowy:
implementation
{$R *.dfm}
uses math;
procedure TForm1.Button1Click(Sender: TObject);
begin
if not isnan(2.3) then Button1.Caption:='x';
if isnan(nan) then Label1.Caption:='f';
end;
u mnie kompiluje sie i dziala.
Cały unit (wystrczy wzucić do katalogu Lib):
unit MathEx;
interface
const
NANSignalingBits: Int64 = $7FF0000000000001;
NANQuietBits: Int64 = $7FFFFFFFFFFFFFFF;
PositiveInfinityBits: Int64 = $7FF0000000000000;
NegativeInfinityBits: Int64 = $FFF0000000000000;
var
NANSignaling: Double absolute NANSignalingBits;
dNANQuiet: Double absolute NANQuietBits;
dPositiveInfinity: Double absolute PositiveInfinityBits;
dNegativeInfinity: Double absolute NegativeInfinityBits;
const
NAN: Double = dNANQuiet;
function IsNAN(const d: Double): Boolean;
function IsInfinity(const d: Double): Boolean;
implementation
function IsNAN(const D: Double): Boolean;
var
Overlay: Int64 absolute D;
begin
Result:=((Overlay and $7FF0000000000000) = $7FF0000000000000) and
((Overlay and $000FFFFFFFFFFFFF) $0000000000000000)
end;
function IsInfinity(const D: Double): Boolean;
var
Overlay: Int64 absolute D;
begin
Result:=(Overlay and $7FF0000000000000) = $7FF0000000000000;
end;
end.
UWAGA: Tylko delphi 4 i wyżej (kod dla starszych wersji gdzieś miałem, ale się zgubił, możesz spróbować zmodyfikować ten (array [0..1] of single + trochę kombinowania), może się uda)
Math na 100% jest w D6 (a na 400% w D6 ent)
Wielkie dzieki za wszystkie odpowiedzi !!!
Moze moj problem wynika z tego, ze aktualnie uzywam D5 w wersji Standard. Moze w tej wersji nie ma tego chociaz z drugiej strony uzywam modulu math w tym samym kodzie (np. ArcCos) i o to sie kompilator nie awanturuje...
Tak czy siak jeszcze raz dziekuje.
Pozdrawiam, Kuba.
aktualnie uzywam D5 w wersji Standard. Moze w tej wersji nie ma tego chociaz z drugiej strony uzywam modulu math w tym samym kodzie
Pewnie jest Math ale jeszcze nie dolozyli obslugi Nan wtedy