Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Problém s NAN v nových Delphi

Dobrý deň, mám aplikáciu, ktorá počíta na základe gps súradníc vzdialenosti medzi gps bodmi, prípadne cieľový bod od počiatočného bodu v zadanom smere a vzdialenosti. Výpočet nového bodu sa robí takouto funkciou:

Procedure Rhumb1(LAT1,LON1, Azimuth1, Dist:EXTENDED; VAR LAT2, LON2:EXTENDED);
 var
   sig, DLat, PDLat, q, DLon:extended;
 begin
sig:=Dist/(1000*ERad);
   DLat:=sig*cos(azimuth1);
   Lat2:=Lat1+DLat;
PDLat:=ln(tan(Pi/4+Lat2/2)/tan(Pi/4+Lat1/2));
   if PDLat>1e-12 then Q:=DLat /PDLat else Q:=cos(lat1);
   DLon:=sig*sin(Azimuth1)/Q;
   Lon2:=Lon1+DLon;
 end;
Riadok
PDLat:=ln(tan(Pi/4+Lat2/2)/tan(Pi/4+Lat1/2));
je problematický, pretože v niektorých situáciách nevráti korektný výsledok a vtedy sa ocitáme mimo našej matičky zeme. V starom prostredí Delphi 6 som s tým nemal problém, pretože daný riadok vrátil hodnotu NAN a rovnako tak výsledok lon2 bol NAN takže kdekoľvek v programe po zavolaní tejto procedúry bolo možné urobiť if isnan(lon2) then 'mimo mapu'. V nových Delphi XE8 a 10 však občas program na danom riadku spadne a ak aplikáciu skompilujem na 64 bit, spadne úplne vždy. Viem že existuje možnosť dať to celé do try exception a sledovať kedy došlo k chybe, no zdá sa mi to ako dosť neomalené amatérske riešenie a tak sa chcem opýtať, prečo majú Windows s týmto problém resp ako to nejako riešiť. Skúšal som si na webe nájsť nejaké riešenie a vidím, že s hodnotou NAN je nejaký problém no nenarazil som na žiadne funkčné riešenie. Vďaka

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny