Fonksiyon Bölme işlemi hesaplama hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
naturelmania
Üye
Mesajlar: 66
Kayıt: 27 Nis 2006 09:29

Fonksiyon Bölme işlemi hesaplama hatası

Mesaj gönderen naturelmania »

Arkadaşlar bir fonksiyon yazdım fakat fonksiyondaki değişkenleri extended olarak belirlediğim halde program bölme yaparken "invalid floating point operation" hatası veriyor. Bölme yerinde başka işlem +, -,* gibi koyduğumda sorun yok. Yalnızca bölmede hata veriyor.
İnteger tipleri birbirine böldüremediğimi biliyorum o yüzden extended olarak belirledim, ama ne yaptıysam hata devam ediyor. :oops:
Acaba nerde hata yapıyorum ya da fonksiyonu belirlerken mi hata yapıyorum??? Not:ilk defa fonksiyon tanımladım :D

Kod: Tümünü seç

//Fonksion bu
function TabloD(Ortsky1,ortsky2,Zortsky1,Zortsky2,ZV1:extended):extended;
begin
   TabloD:= ((((OrtSky2-OrtSky1)*(zv1-zortsky1))/(zortsky2-zortsky1))+OrtSky1);
end;




//Bu da yürütme bölümü

Procedure button1.Click(Sender:Tobject)
begin
            i:=0;
            SetLength(DSkyU,vua);
            z:=1;
            for k := 1 to vua do
            begin
              inc(i);
              if (i mod strtoint(Form2.Kutu4.Text))=0 then inc(z);
              inc(ADSkyU);
              DSkyU[ADSkyU]:= TabloD(SkyOrtU[z],SkyOrtU[z+1],ZSkyOrtU[z],ZSkyOrtU[Z+1],ZVU[z]);
            end;
var
sen : sevgili;
ben : aşık;
sevgi: aşk;
if ben aşık sana = True then
execute sevgi between(sen,ben);
:)))))
naturelmania
Üye
Mesajlar: 66
Kayıt: 27 Nis 2006 09:29

Mesaj gönderen naturelmania »

Arkadaşlar acı ama gerçek :oops: Sorunumu kendi kendime çözdüm...
Floating point hatasını koddaki Form2.Kutu4.Text ten gelen değerin olması gerekenden daha az olması nedeniyle inc(z) yapıp bi üst seviyeye geçiyor fakat o değerler benim elimdeki deneme verisinde olmadığı için 0 oluyor ve bölmede hata oluyor :oops:
var
sen : sevgili;
ben : aşık;
sevgi: aşk;
if ben aşık sana = True then
execute sevgi between(sen,ben);
:)))))
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Bölme işlemlerinde ya bölenin sıfır kontrolü yapılmalı ya da try / except / end içinde yapmalı :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
naturelmania
Üye
Mesajlar: 66
Kayıt: 27 Nis 2006 09:29

Mesaj gönderen naturelmania »

@rsimsek hocam haklısınız.
bunu da eklersem hata payım iyice düşecek
teşekkür ederim :D
var
sen : sevgili;
ben : aşık;
sevgi: aşk;
if ben aşık sana = True then
execute sevgi between(sen,ben);
:)))))
Cevapla