ondalık sayı hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

ondalık sayı hatası

Mesaj gönderen Tahsinzencir »

Dostlar Selamünaleyküm, çok yöntem denedim ancak sonuca varamadım;
sorunum şu
veri girişine tam sayı girince "1000 gibi" aşağıdaki kod lar çalışıyor,
veri girişine ondalık sayı girince "1000,5 gibi" aşağıdaki kod lar çalışmıyor!

Ayrıca veri girişi boş geçtiğin de de kodlar hesaplama yapmıyor.
formda çok arama yaptım ancak çözüm bulamadım

Kod: Tümünü seç

procedure TFAnaliz.sBitBtn1Click(Sender: TObject);
VAR
 x,y,x1,y1,x2,y2,x3,y3,x4,y4,z1,x5,y5,z2,z3,z4,
 Sonuc,sonuc1,sonuc2,sonuc3,sonuc4,sonuc5,sonuc6,sonuc7,
 a,b,c,d,e,f,g,h,k,l,m,n,o,p,r,s,t,u,v:Integer;

 son,son1,son2,son3,son4,son5,son6,son7,son8,
 son9,son10,son11,son12,son13,son14,son15,son16,son17,son18:Extended;
begin
  DMSProj.TPro.Close;
  DMSProj.TPro.Open;//Tabloyu Aç
  if E6.Text=''  then
  DMSProj.TPro.Filter:=''
  else
  DMSProj.TPro.Filter:='[Tanim]='+#39+E6.text+'*'+#39;
  DMSProj.TPro.Filtered:=True;

begin
 //L1  a  Son
 QToplamGelir.Refresh();
 QToplamGelir.Filtered:=False;
 if E6.Text=EmptyStr then
 QToplamGelir.Filter:='';
 QToplamGelir.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 L1.Text:= QToplamGelirTu.AsString;
 QToplamGelir.Filtered:=True;
 a:=StrToIntDef(L1.Text, 0);
 Son:=a;
 L1.Text:=FloatToStr(son);
 LL1.Caption:=FormatFloat('#,##0.00',son);

 //L2  b Son1
 QSantiyeNakit.Refresh();
 QSantiyeNakit.Filtered:=False;
 if E6.Text=EmptyStr then
 QSantiyeNakit.Filter:='';
 QSantiyeNakit.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 L2.Text:=QSantiyeNakitTu.AsString;
 QSantiyeNakit.Filtered:=True;
 b:=StrToIntDef(L2.Text, 0);
 Son1:=b;
 L2.Text:=FloatToStr(son1);
 LL2.Caption:=FormatFloat('#,##0.00',son1);


 //L3  Son2:=c
 QSantiyeCek.Refresh();
 QSantiyeCek.Filtered:=False;
 if E6.Text=EmptyStr then
 QSantiyeCek.Filter:='';
 QSantiyeCek.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QSantiyeCek.Filtered:=True;
 c:=StrToIntDef(L3.Text, 0);
 Son2:=c;
 L3.Text:=FloatToStr(son2);
 LL3.Caption:=FormatFloat('#,##0.00',son2);

 //L4   d Son3
 QTaseronNakit.Refresh();
 QTaseronNakit.Filtered:=False;
 if E6.Text=EmptyStr then
 QTaseronNakit.Filter:='';
 QTaseronNakit.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QTaseronNakit.Filtered:=True;

 d:=StrToIntDef(L4.Text, 0);
 Son3:=d;
 L4.Text:=FloatToStr(son3);
 LL4.Caption:=FormatFloat('#,##0.00',son3);


 //L5  e  Son4
 QTaseronCek.Refresh();
 QTaseronCek.Filtered:=False;
 if E6.Text=EmptyStr then
 QTaseronCek.Filter:='';
 QTaseronCek.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QTaseronCek.Filtered:=True;

 e:=StrToIntDef(L5.Text, 0);
 Son4:=e;
 L5.Text:=FloatToStr(son4);
 LL5.Caption:=FormatFloat('#,##0.00',son4);


  //L6    t  Son17
 QPersonelNakit.Refresh();
 QPersonelNakit.Filtered:=False;
 if E6.Text=EmptyStr then
 QPersonelNakit.Filter:='';
 QPersonelNakit.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QPersonelNakit.Filtered:=True;

 t:=StrToIntDef(L6.Text, 0);
 Son17:=t;
 L6.Text:=FloatToStr(son17);
 LL6.Caption:=FormatFloat('#,##0.00',son17);

  //L7   Son18:=u;
 QPersonelCek.Refresh();
 QPersonelCek.Filtered:=False;
 if E6.Text=EmptyStr then
 QPersonelCek.Filter:='';
 QPersonelCek.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QPersonelCek.Filtered:=True;
 u:=StrToIntDef(L7.Text, 0);
 Son18:=u;
 L7.Text:=FloatToStr(son18);
 LL7.Caption:=FormatFloat('#,##0.00',son18);


  //L8    o   Son13
  QTedarikciNakit.Refresh();
  QTedarikciNakit.Filtered:=False;
  if E6.Text=EmptyStr then
  QTedarikciNakit.Filter:='';
  QTedarikciNakit.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
  QTedarikciNakit.Filtered:=True;
  L8.Text:= QTedarikciNakitTu.AsString;

  o:=StrToIntDef(L8.Text, 0);
  Son13:=o;
  L8.Text:=FloatToStr(son13);
  LL8.Caption:=FormatFloat('#,##0.00',son13);

  //L9    p   Son14
  QTedarikciCek.Refresh();
  QTedarikciCek.Filtered:=False;
  if E6.Text=EmptyStr then
  QTedarikciCek.Filter:='';
  QTedarikciCek.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
  QTedarikciCek.Filtered:=True;

  p:=StrToIntDef(L9.Text, 0);
  Son14:=p;
  L9.Text:=FloatToStr(son14);
  LL9.Caption:=FormatFloat('#,##0.00',son14);


 //L10    x DBEdit1   y DBEdit3    sonuc
 QSaKalanAlacak.Refresh();
 QSaKalanAlacak.Filtered := False;
 if E6.Text=EmptyStr then
 QSaKalanAlacak.Filter:='';
 QSaKalanAlacak.Filter :='[BaSan]='+#39+E6.Text+'*'+#39;
 QSaKalanAlacak.Filtered:=True;

 x:=StrToIntDef(DBEdit1.Text,0);
 y:=StrToIntDef(DBEdit3.Text,0);
 sonuc:=x-y;
 L10.Text:=FloatToStr(sonuc);
 LL10.Caption:=FormatFloat('#,##0.00',sonuc);


 //L11      f     Son5
 QSaOdemeToplam.Refresh();
 QSaOdemeToplam.Filtered:=False;
 if E6.Text=EmptyStr then
 QSaOdemeToplam.Filter:='';
 QSaOdemeToplam.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QSaOdemeToplam.Filtered:=True;

 f:=StrToIntDef(L11.Text, 0);
 Son5:=f;
 L11.Text:=FloatToStr(son5);
 LL11.Caption:=FormatFloat('#,##0.00',son5);


 //L12   g     Son6
 QOdSaNakit.Refresh();
 QOdSaNakit.Filtered:=False;
 if E6.Text=EmptyStr then
 QOdSaNakit.Filter:='';
 QOdSaNakit.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QOdSaNakit.Filtered:=True;

 g:=StrToIntDef(L12.Text, 0);
 Son6:=g;
 L12.Text:=FloatToStr(son6);
 LL12.Caption:=FormatFloat('#,##0.00',son6);

 //L13    Son7:=h
 QOdSaCek.Refresh;
 QOdSaCek.Filtered:=False;
 if E6.Text=EmptyStr then
 QOdSaCek.Filter:='';
 QOdSaCek.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QOdSaCek.Filtered:=True;

 h:=StrToIntDef(L13.Text, 0);
 Son7:=h;
 L13.Text:=FloatToStr(son7);
 LL13.Caption:=FormatFloat('#,##0.00',son7);


 //L14     Son8:=k
 QSOTasNakit.Refresh();
 QSOTasNakit.Filtered:=False;
 if E6.Text=EmptyStr then
 QSOTasNakit.Filter:='';
 QSOTasNakit.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QSOTasNakit.Filtered:=True;

 k:=StrToIntDef(L14.Text, 0);
 Son8:=k;
 L14.Text:=FloatToStr(son8);
 LL14.Caption:=FormatFloat('#,##0.00',son8);

 //L15     Son9:=l
 QSOTasCek.Refresh();
 QSOTasCek.Filtered:=False;
 if E6.Text=EmptyStr then
 QSOTasCek.Filter:='';
 QSOTasCek.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QSOTasCek.Filtered:=True;

 l:=StrToIntDef(L15.Text, 0);
 Son9:=l;
 L15.Text:=FloatToStr(son9);
 LL15.Caption:=FormatFloat('#,##0.00',son9);

  //L16    Son11:=v
 QSOPersonelNakit.Refresh();
 QSOPersonelNakit.Filtered:=False;
 if E6.Text=EmptyStr then
 QSOPersonelNakit.Filter:='';
 QSOPersonelNakit.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QSOPersonelNakit.Filtered:=True;

 v:=StrToIntDef(L16.Text, 0);
 Son11:=v;
 L16.Text:=FloatToStr(son11);
 LL16.Caption:=FormatFloat('#,##0.00',son11);


  //L17   Son12:=n;
 QSOPersonelCek.Refresh();
 QSOPersonelCek.Filtered:=False;
 if E6.Text=EmptyStr then
 QSOPersonelCek.Filter:='';
 QSOPersonelCek.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QSOPersonelCek.Filtered:=True;

 n:=StrToIntDef(L17.Text, 0);
 Son12:=n;
 L17.Text:=FloatToStr(son12);
 LL17.Caption:=FormatFloat('#,##0.00',son12);



  //L18   son15:=r
 QSOCariNakit.Refresh();
 QSOCariNakit.Filtered:=False;
 if E6.Text=EmptyStr then
 QSOCariNakit.Filter:='';
 QSOCariNakit.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QSOCariNakit.Filtered:=True;

 r:=StrToIntDef(L18.Text, 0);
 son15:=r;
 L18.Text:=FloatToStr(son15);
 LL18.Caption:=FormatFloat('#,##0.00',son15);

  //L19     son16:=s
 QSOCariCek.Refresh();
 QSOCariCek.Filtered:=False;
 if E6.Text=EmptyStr then
 QSOCariCek.Filter:='';
 QSOCariCek.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QSOCariCek.Filtered:=True;

 s:=StrToIntDef(L19.Text, 0);
 son16:=s;
 L19.Text:=FloatToStr(son16);
 LL19.Caption:=FormatFloat('#,##0.00',son16);

 //L20    x3:=DBEdit2    y3:=DBEdit4
 QTBorcluHeTop1.Refresh();
 QTBorcluHeTop1.Filtered:=False;
 if E6.Text=EmptyStr then
 QTBorcluHeTop1.Filter:='';
 QTBorcluHeTop1.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QTBorcluHeTop1.Filtered:=True;

 QTBorcluHeTop2.Refresh();
 QTBorcluHeTop2.Filtered:=False;
 if E6.Text=EmptyStr then
 QTBorcluHeTop2.Filter:='';
 QTBorcluHeTop2.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QTBorcluHeTop2.Filtered:=True;

 x3:=StrToIntDef(DBEdit2.Text, 0);
 y3:=StrToIntDef(DBEdit4.Text, 0);
 Sonuc1:=x3-y3;
 L20.Text:=FloatToStr(sonuc1);
 LL20.Caption:=FormatFloat('#,##0.00',sonuc1);


 //L21
 QAlTasHETop.Refresh();
 QAlTasHETop.Filtered:=False;
 if E6.Text=EmptyStr then
 QAlTasHETop.Filter:='';
 QAlTasHETop.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QAlTasHETop.Filtered:=True;


  //L22
  QTedarikciNakit.Refresh();
  QTedarikciNakit.Filtered:=False;
  if E6.Text=EmptyStr then
  QTedarikciNakit.Filter:='';
  QTedarikciNakit.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
  QTedarikciNakit.Filtered:=True;

 QSOCariNakit.Refresh();
 QSOCariNakit.Filtered:=False;
 if E6.Text=EmptyStr then
 QSOCariNakit.Filter:='';
 QSOCariNakit.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QSOCariNakit.Filtered:=True;

 x5:=StrToIntDef(DBEdit9.Text, 0);
 y5:=StrToIntDef(DBEdit10.Text, 0);
 z1:=StrToIntDef(DBEdit11.Text, 0);
 z2:=StrToIntDef(DBEdit12.Text, 0);
 sonuc5:=(x5-y5)+(z1-z2)+(s-p);
 L22.Text:=FloatToStr(sonuc5);
 LL22.Caption:=FormatFloat('#,##0.00',sonuc5);

  //L23
  QTedarikciNakit.Refresh();
  QTedarikciNakit.Filtered:=False;
  if E6.Text=EmptyStr then
  QTedarikciNakit.Filter:='';
  QTedarikciNakit.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
  QTedarikciNakit.Filtered:=True;
  sonuc6:=(y5-y5)+(p)-(p);
  L23.Text:=FloatToStr(sonuc6);
  LL23.Caption:=FormatFloat('#,##0.00',sonuc6);

 //L24
 QToplamMaliyet.Refresh();
 QToplamMaliyet.Filtered:=False;
 if E6.Text=EmptyStr then
 QToplamMaliyet.Filter:='';
 QToplamMaliyet.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QToplamMaliyet.Filtered:=True;

 QToplamMaliyet1.Refresh;
 QToplamMaliyet1.Filtered:=False;
 if E6.Text=EmptyStr then
 QToplamMaliyet1.Filter:='';
 QToplamMaliyet1.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QToplamMaliyet1.Filtered:=True;

 x4:=StrToIntDef(DBEdit6.Text, 0);
 y4:=StrToIntDef(DBEdit7.Text, 0);
 sonuc2:=(x4-y4)+(x5-y5)+(s-p)+(v-t)+(n-u);
 L24.Text:=FloatToStr(sonuc2);
 LL24.Caption:=FormatFloat('#,##0.00',sonuc2);


 //L25
  QTedarikciNakit.Refresh();
  QTedarikciNakit.Filtered:=False;
  if E6.Text=EmptyStr then
  QTedarikciNakit.Filter:='';
  QTedarikciNakit.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
  QTedarikciNakit.Filtered:=True;

  sonuc7:=(y5-y5)+(p-p)+(v-v)+(u-u);
  L25.Text:=FloatToStr(sonuc7);
  LL25.Caption:=FormatFloat('#,##0.00',sonuc7);


 //26  Son10:=m
 QKaCekOdeme.Refresh();
 QKaCekOdeme.Filtered:=False;
 if E6.Text=EmptyStr then
 QKaCekOdeme.Filter:='';
 QKaCekOdeme.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QKaCekOdeme.Filtered:=True;

 m:=StrToIntDef(L26.Text, 0);
 Son10:=m+s;
 L26.Text:=FloatToStr(son10);
 LL26.Caption:=FormatFloat('#,##0.00',son10);


 //L27
 QKalanNakit.Refresh();
 QKalanNakit.Filtered:=False;
 if E6.Text=EmptyStr then
 QKalanNakit.Filter:='';
 QKalanNakit.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QKalanNakit.Filtered:=True;

 QKNOdeme.Refresh();
 QKNOdeme.Filtered:=False;
 if E6.Text=EmptyStr then
 QKNOdeme.Filter:='';
 QKNOdeme.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QKNOdeme.Filtered:=True;

 x1:=StrToIntDef(E1.Text, 0);
 y1:=StrToIntDef(E2.Text, 0);
 sonuc3:=(x1-y1)-(r)+p+t-v+u;
 L27.Text:=FloatToStr(sonuc3);
 LL27.Caption:=FormatFloat('#,##0.00',sonuc3);


 //L28
 QKalanKar.Refresh();
 QKalanKar.Filtered:=False;
 if E6.Text=EmptyStr then
 QKalanKar.Filter:='';
 QKalanKar.Filter:='[BaSan]='+#39+E6.Text+'*'+#39;
 QKalanKar.Filtered:=True;

 x2:=StrToIntDef(DBEdit1.Text,0);
 y2:=StrToIntDef(E3.Text,0);
 sonuc4:=(x2-y2);
 L28.Text:=FloatToStr(sonuc4);
 LL28.Caption:=FormatFloat('#,##0.00',sonuc4);
.
akissoftware
Üye
Mesajlar: 118
Kayıt: 17 Ağu 2010 09:08

Re: ondalık sayı hatası

Mesaj gönderen akissoftware »

Ve aleyküm selam...

Boş geçmeyi şöyle engelleyebilirsin;

Kod: Tümünü seç

if Edit1.Text <> 0 then begin
....
....
end;
Ya da;
PriceNum diye Currency bir variable tanımlayıp bu şekilde de kullanabilirsin;

Kod: Tümünü seç

if Edit1.GetTextLen > 0 then PriceNum := StrToFloat(StringReplace(Edit1.Text, ThousandSeparator, EmptyStr, [rfReplaceAll])) else  PriceNum:=0;
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: ondalık sayı hatası

Mesaj gönderen ertank »

Merhaba,

Sorununuz yüksek ihtimal ile;
1- Ekranda kolay okunması açısından binlik ve ondalık olarak ayrılmış ("1.000,25" gibi) şekilde gösterdiğiniz bilgilerden
2- İşletim sistemi ile Delphi ondalık ayraçlarının farklı olmasından
kaynaklanıyor. Bu olası sorunların her ikisini de ortadan kaldırmaya yardımcı olabilecek aşağıdaki fonksiyonu kullanabilirsiniz

Kod: Tümünü seç

function GetExtended(const Value: string): Extended;
var
  TempString: string;
begin
  TempString := StringReplace(Value, ThousandSeparator, EmptyStr, [rfReplaceAll]);
  TempString := StringReplace(TempString, DecimalSeparator, '.', []);
  Result := StrToFloatDef(TempString, 0);
end;
Kullanımı şöyle olacaktır

Kod: Tümünü seç

  a := GetExtended(L1.Text);
  b := GetExtended(L1.Text);
  c := GetExtended(L3.Text);
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

Re: ondalık sayı hatası

Mesaj gönderen Tahsinzencir »

sevgili ertank kardeş özür dilerim sizede çok yük olduğumun farkındayım umarım anlayışla karşılarsınız
En son Tahsinzencir tarafından 25 Eki 2018 04:12 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

Re: ondalık sayı hatası

Mesaj gönderen Tahsinzencir »

ancak başka hata alıyorum aşağıda izah etmeye çalıştım umarım sizi üzmemişimdir.
En son Tahsinzencir tarafından 25 Eki 2018 04:14 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

Re: ondalık sayı hatası

Mesaj gönderen Tahsinzencir »

var bloku içindeki a........:Extended yapınca oldu ,

tamam kullanımı hallettim ancak şu hata oluşuyor

a:=GetExtended(L1.Text);
Son:=a;
L1.Text:=FloatToStr(son);
LL1.Caption:=FormatFloat('#,##0.00',son);

kodu çalıştırınca
L1.Text 0 yapıyor
dolaysıyla
a ya 0 atıyor

dolaysıya aşağıdaki kısım işlemiyor
Son:=a;
L1.Text:=FloatToStr(son);
LL1.Caption:=FormatFloat('#,##0.00',son);
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: ondalık sayı hatası

Mesaj gönderen ertank »

L1.Text içindeki değer rakama dönüştürülemez ise 0 cevabı veriliyor.
L1.Text değeri ne olduğu halde 0 cevabını alıyorsunuz?
Cevapla