Segítség érvénytelen lebegőpontos művelet!

Segítség Érvénytelen lebegőpontos művelet !!

Emberek!
Kérdezzen, hogy mit csinálok rosszul?
mi van a változók:
MaxRowId: integer;
R: kettős;
Amikor megpróbál: r: = MaxRowId / 2 hibaüzenetet kapok „Érvénytelen lebegőpontos művelet”. Mit csinálok rosszul?
és ha ezt megelőzően számítás postvait ShowMessage (MaxRowId) működik minden.

Végtére is, egyértelmű, hogy meg van írva: „Érvénytelen lebegőpontos művelet”. Levonja a megfelelő következtetéseket.


eljárás TForm1.FormCreate (Sender: TObject);
var
# XA0; MaxRowId: integer;
# XA0; R: kettős;
kezdődik
# XA0; MaxRowId: = Fogantyú;
# XA0; R: = MaxRowId / 2;
# XA0; ShowMessage (FloatToStr (R))
végén;

És ez működik. Tehát a válasz a kérdésre: „Mit csinálok rosszul?” meg kell nézni máshol a kódot.

) Én is meglepődtem, tudósok ez a fordulat azonban még mindig MaxRowId normál értéke nem nulla, és egy egyszerű osztás 2 nem különösebben ponty. Delphi lehet glyukanul? Mindenesetre, köszönjük mindenkinek! És én megtettem anélkül, hogy ez osztály :)

Voltak ilyen szórakoztató, WinAPI néhány helyen (általában kernel32 hívások) megváltoztatja a zászlók koprocesszor - Delphi hol rögzíti (SafeLoadLibrary például), de leginkább támaszkodnak kizárólagos birtokában a koprocesszor (és globálisan állandó állapot), amely esetenként helytelen munkáját Rendszer ._FSafeDivide.
Menti ASM finit végén; szétosztása előtt.

ZY Glitch abból az időből származik a BP7.0 / D1 alatt DPMI.

Zzy És ez mindig egy hiba elosztjuk egészek hozza a lebegőpontos szám.


> Érvénytelen lebegőpontos művelet

És én ezt gyakran előfordul a D7, ha dolgozik, dátumok és töréspontok napja feldolgozási eljárások tegye. Azt, hogy egy töréspont - kapsz egy kivétel, kifelé - minden nem dolgozott, mint a karikacsapás.