Ondalıklı Sayılarda Hata (Virgül hatası) Örn:50,6

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Ondalıklı Sayılarda Hata (Virgül hatası) Örn:50,6

Mesaj gönderen pro_imaj »

Merhaba Arkadaşlar

var
sayi1,Sayi2:integer;
begin
begin
if edit4.Text ='' then
edit4.Text:=Edit3.Text;
end;
begin


sayi1:=StrToint (Edit3.text);
sayi2:=StrToint (Edit4.text);
sayi1:=sayi1-1; // Yazılanıda Araması için
sayi2:=sayi2+1; // Yazılanıda Araması İçin
sistem.AckQuery.Close;
sistem.AckQuery.Sql.Clear;
sistem.AckQuery.sql.text:='Select * From FINSAT4'+Giris.SdkQueryKod.Text+'.ACK Where Tutar>'''+inttostr(sayi1)+''' and Tutar <''' +inttostr(sayi2)+'''';
sistem.AckQuery.Open;
end;
end;

Arkadaşlar Bu kod Düzgün çalışıyor ama tek sorunu tam sayı olmayan kayıtlarda

örn :edit1e 50 edit 2 ye 100 yazdığımda hiçbir sorun yok
ama mesela edit1 e veya edit 2 ye 50,5 yazdığımda yani ondalıklı yazdığımda hata veriyor.

Bir türlü düzeltemedim.
Sorunun tanımlamadan olduğunu düşünüyorum

Teşekkür ederim.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

benimki sadece fikir

integer tam sayı kodunda floattostr kullansan 50,5 ondalık o yüzden.

yalınız öneriyorum ama denemedim

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Bence normaldir hata vermesi çünkü
integer
tam sayıyı temsil eder.

şöle yap;

Kod: Tümünü seç

var
sayi1,sayi2:currency (yada double)
İnteger dersen integer sadece tamsayıları temsil eder.float tipinde bir sayıyı işlem gördüremezsin. kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Hepsini Denedim

Mesaj gönderen pro_imaj »

Yani Currencry de denemdim ama yine olmuyor.

Anlayamıyorum..

Teşkkür ederim Arkadaşlar..
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

ustam saygısızlık ettik ise affola iki dakke önce sözünüzü kesmişim

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Hata Varchar tanımıdan

Mesaj gönderen pro_imaj »

Yani ben ara prog yazdığım için işlem yaptığım alan varchar tanımlı
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Hocam estafurullah benden hızlı hareket ,refleks meselesi. Ama benim anlamadığım

Kod: Tümünü seç

currency,double
olmaması

hocam currency ve double haliyle ve hatasıyla yazabişlirseniz yardımcı olcaz.normalde bu tip alanlar float tipli olmalı.o zaman veritabanından kaynaklanan bir hata.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Değiştirdim ama hata var

Mesaj gönderen pro_imaj »

şu anki yazdığım ama hata veren kod


var
sayi1,Sayi2:currency;
begin

begin

if edit4.Text ='' then
edit4.Text:=Edit3.Text;
end;
begin


sayi1:=StrToCurr (Edit3.text);
sayi2:=StrToCurr (Edit4.text);
sayi1:=sayi1-1; // Yazılanıda Araması için
sayi2:=sayi2+1; // Yazılanıda Araması İçin
sistem.AckQuery.Close;
sistem.AckQuery.Sql.Clear;
sistem.AckQuery.sql.text:='Select * From FINSAT4'+Giris.SdkQueryKod.Text+'.ACK Where Tutar>'''+FloatToStr (sayi1)+''' and Tutar <''' +FloatToStr (sayi2)+'''';
sistem.AckQuery.Open;
end;
end;
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

çevirme işlemini

Kod: Tümünü seç

currtostr(sayi1)
olarak uygula bundan önceki mesajında varchar olarak alan demişsin alan tipini double yap o şekilde dene.hatayı yine yazmamışsın problem çözmede hatanın ne olduğunu bilmek problemiin yarınıs çözmek demek aslında.

kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Hocam olmuyor

Mesaj gönderen pro_imaj »

Neyi Denediysen olmadı.

Veri Tabanında tipide değiştiremiyorum
çünkü ben ara prog yazıyorum yani başka programın veri tabnında bu işlemi yapıyorum.

Hata Msj = data type varchar to numeric


Ne yaptıysam olmuyor.

Teşekkür ederim

Kolay gelsin
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

hata belli

Kod: Tümünü seç

data type to numaric
veri tipinde hata var değiştirmen lazım.değiştiremezsen nasıl olcak aklıma birşey gelmiyor.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba,

aşağıdaki kod String şekilde virgüllü yada noktalı verilmiş sayıyı Double olarak geri döndürür zamanında laım olmuştu hazırda yaptığım fonksiyonu veriyorum.

Kod: Tümünü seç

function StringToDouble(Deger: String): Double;
var
tur,Pz:Byte;
tam,SonTam,ondalik:String;
begin
  tur:=0;

  if pos(',',Deger)>0 then
  begin
  tur:=pos(',',Deger);
  tam:=copy(deger,1,tur-1);
  ondalik:=copy(deger,tur+1,length(deger)-tur);
  pz:=Pos('.',tam);
  if pz>0 then
    begin
    SonTam:=Copy(tam,1,pz-1);
    SonTam:=SonTam+copy(tam,pz+1,Length(tam)-pz);
    end else SonTam:=tam;
  if ondalik<>'' then Result:=StrTOFloat(sontam+DecimalSeparator+ondalik) else
  Result:=StrToFloat(sontam+DecimalSeparator+'0');
  end else
    begin
      tur:=pos('.',Deger);
        if tur=0 then Result:=0 else
          begin
             Tam:=copy(deger,1,tur-1);
             Ondalik:=copy(deger,tur+1,Length(deger)-tur);
             Result:=StrTOFloat(tam+DecimalSeparator+ondalik);
          end;
    end;
end;

kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Teşekkür Ederim

Mesaj gönderen pro_imaj »

Herkeze çok teşekkür ederim arkadaşlar.

Halen yapamasamda yardımlarınız için saolun.

Sorun Varsa Çözümde vardır muhakkat.

Saygılarımla
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
burakb44
Üye
Mesajlar: 131
Kayıt: 11 Mar 2005 03:13

Mesaj gönderen burakb44 »

mrb. uery ile sorgulama yaptığın alanın data tipi ne ise kod yazarkende aynı tipte değişken kullanmalısın. senin veritabanında tutar alanın hangi data tipinde onu yazabilirmisin?
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Tip değeri

Mesaj gönderen pro_imaj »

Tip olarak var char tanımlı bunun nedeni ara program yazmış olmama yani bunu değiştirmemeliyim.

Volkan abi yazmış olduğun functionu kullanıcam.

Teşekkür ederim

Kolay Gelsin.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Cevapla