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ý večer, ani ja sa až natoľko nevyznám v matematike, aby som porozumel podstate tohto výpočtu. Dlho som však hľadal spôsob, ako podľa súradníc jedného bodu na zemi podľa vzdialenosti a smeru vyrátať druhý a tento vzorec presne toto robí a určite počíta správne. Vstupné parametre sú lat a lon nejakého bodu na zemi (v radiánoch), azimut (tiež v radiánoch) a vzdialenosť v metroch. Takže ak ako vstup zadáme napr. súradnice Bratislavy deg2rad(48.125), deg2rad(17.070), azimut deg2rad(0) a vzdialenosť 100000, dostaneme výsledok 49.023 17.070
(samozrejme oboje po prevode z radiánov na stupne) a to je bod 100 Km severne od Bratislavy. Vzorec však nemá ošetrené napr. preklopenie cez pól a to musím teda robiť ručne. Ak z tohto vzorca matematicky vyjde latitúda väčšia ako 90 alebo premenná lon2 je bez numerickej hodnoty NAN, tak viem, že treba výsledok ošetriť. No a tu je práve ten problém. V 32-bitovej aplikácii vzorec vráti NAN a ja viem, že výsledok nie je platným bodom na Zemi a príslušne ho spracujem. 64-bitová aplikácia však na tom kritickom riadku spadne s nejakou hláškou o chybe pri float operation a ja sa už ani nedostanem k tomu, aby som výsledok nejako ošetril. Skúsil som pridať direktívu
{$FINITEFLOAT OFF}
ktorá by mala vypnúť kontrolu float operácií, ale nepomohlo to. Teda chyba nie je vo výpočte samom ale v tom, že ja by som potreboval odchytiť že je vrátený žiadny výsledok. Nechápem prečo 32-bit s tým nemá problém a 64-bit spadne - občas aj 32-bit ale len výnimočne. A ide mi skôr o to, či sa nedá stav zo starých Delphi dosiahnuť nejakou konfiguráciou. Dočítal som sa na nete o viacerých typoch NAN ale veľmi som tomu neporozumel. Zatiaľ som celý vzorec dal do try a exception ale keďže ide o jadro programu, je tento výpočet volaný veľmi často a po nejakom čase skôr či neskôr aj tak aplikácia spadne, ak je exception vyvolaná opakovane niekoľko sto alebo tisíckrát. Takže rátať s chybou a nechať ju vyvolávať cyklycky do kola mám pocit nie je to pravé riešenie.

Reakce na odpověď

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

Zpět do poradny