Sayı floatmı,integermi başka bişeymi anlayamadım gitti

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Sayı floatmı,integermi başka bişeymi anlayamadım gitti

Mesaj gönderen sako »

Merkez bankasından döviz kurlarını alıyorum. aldığım kur 1.3598 şeklinde geliyor .hesaplama yaptırmak isteyince bu değeri ne integer olarak ne de float veya currency olarak kabul etmiyor. 13598 veya 1.359,8 şekline nasıl çevirebilirim bu sayıyı acaba.

Kolay gelsin herkese
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

:ara DecimalSeperator

ya da pos() ile "." (nokta) yı bulup "," (virgül) ile değiştirebilirsin.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
uğur alkan
Üye
Mesajlar: 227
Kayıt: 29 Ağu 2004 04:49
Konum: Istanbul

Mesaj gönderen uğur alkan »

ilginç bir fonksiyon buldum gayet güzel çalışıyor

Sadece formun Uses kısmına 'strutils' ekliyorsunuz
stringin içinde istediğiniz karekteri istediğiniz karekterle sorunsuz değiştiriyor

Kod: Tümünü seç

XDEGER[i]:=AnsireplaceSTR(XDEGER[i],'.',',');
şeklinde kullanılıyor 1. parametre değişim yapılacak olan string
2. paremetre değiştirilecek kısım 3. parametrede değiştirelecek olan kısmın yerine yazılacak olan string
nokta (.) virgül (,) dönüşümlerinde insanları pos komutundan kurtarıyor....
Bazen sert rüzgarlar eser başını öne eğmekten asla korkma
ikut

Mesaj gönderen ikut »

uğur alkan yazdı:ilginç bir fonksiyon buldum gayet güzel çalışıyor

Sadece formun Uses kısmına 'strutils' ekliyorsunuz
stringin içinde istediğiniz karekteri istediğiniz karekterle sorunsuz değiştiriyor

Kod: Tümünü seç

XDEGER[i]:=AnsireplaceSTR(XDEGER[i],'.',',');
şeklinde kullanılıyor 1. parametre değişim yapılacak olan string
2. paremetre değiştirilecek kısım 3. parametrede değiştirelecek olan kısmın yerine yazılacak olan string
nokta (.) virgül (,) dönüşümlerinde insanları pos komutundan kurtarıyor....
Merhaba

bulduğunuz çözüm geçici rsimsek ise kesin çözümü göstermiş. şöyle izah edeyim. bizde ayraç virgul ama almanyada yada italyada değil. ? senin fonksiyon sadece tr için işi çözüyor. başka bir şeye yaramıyor..
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

ikut yazdı: bizde ayraç virgul ama almanyada yada italyada değil. ? senin fonksiyon sadece tr için işi çözüyor. başka bir şeye yaramıyor..
Ben arakdaşın farklı bir dilde program yazmadığını düşünüyorum :D

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]
_________________
poshet303
Üye
Mesajlar: 235
Kayıt: 26 Eki 2005 01:15

Mesaj gönderen poshet303 »

Para birimi ondalık hanesinin problemli olduğunu daha yeni konuştuk.

Decimalseparator burda iş görebilir. Ama DecimalSeparator sayılar için ondalık ayıracı para için değil.
bizde ayraç virgul ama almanyada yada italyada değil. ? senin fonksiyon sadece tr için işi çözüyor. başka bir şeye yaramıyor..
Ondalık ayıracı para için, İtalyada da virgül (bakınız: Marcu Canto Unleashed Delphi 5). Asıl sorun bizim (Türkiye) hemen her konu gibi Avrupa standartlarına bağlı olmamamız. Halbu ki dünyada egemen olan Anglosakson lar. Onlarda Avrupalı olmalarına rağmen farklı standartlara sahipler. Nese uzatmayalım.

Bölge ve Dil seçeneklerinden DecimalSeparator ü herhangi bir karekter yapabilirsiniz. Decimalseparator ü değiştirmek tam bir çözüm değil. Adam parabirimi ondalık ayıracı olarak bu gün "," kullanır sizde programı ona göre yazarsınız sonra adam "." yapar sizin program çöker. Biz bunu yaşadık binlerce abonenin hesaplarının silinip yeniden düzenlenmesi gerekti. Neseki ben yapmadım :)

Benim önereceğim çözüm;
Sayının sağdan üçüncü karekterini Sisteminizdeki DecimalSeparator ile değiştirin (üçüncü karekter rakamsa değişmemeli). Bunun dışındaki rakam olmayan tüm karekterleri silin. sadece rakamlardan oluşan (ve sağdan 3 ü karekteri sistemdeki DecimalSeparator olan) bir sayı kalsın elinizde. Onuda istediğiniz fonksiyonla sayıya çevirebilirsiniz. (parabirimi fonksiyonlarını kullanmayın, StrToCurr gibi)
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

@Poshet303 önemli bir çözüm üretmiş kısa bi ekleme yapayım ben de..

Yapman gereken işlem, açılışta DecimalSeparator karakterini öğrenmek.Merkez Bankası uluslararası standartta çalıştığı için mecburen diğer ülkelerin standartlarına uymak durumunda kaldığından ondalık karakterini nokta olarak kullanıyor (ki doğru olan da budur..).Kur bilgisini aldıktan sonra bu bilgi içinde nokta (tabi bu Merkez Bankasının ileride bunu değiştirmeyeceği anlamına gelmez..) karakterini aratıp DecimalSeparatorle uyuşup uyuşmadığını kontrol etmek ve uyuşmuyorsa bunu AnsiReplaceStr, AnsiReplaceText ya da kendin bir fonksiyon yazarak değiştirmek.Son olarak yukarıdaki Ansi.. fonksiyonlarını kullanabilmek için Uses'a StrUtils unitini eklemen gerekecektir.

Kolay gele..
poshet303
Üye
Mesajlar: 235
Kayıt: 26 Eki 2005 01:15

Mesaj gönderen poshet303 »

1.3598

bu kısım dikkatimi çekmemiş. Soldan üçün karekteri işlemek bu veride işe yaramayacaktır. Fakat önerdiğim çözümün mantığını anladınız sanırım buna göre işleyebilirsiniz.

Ama hala problemler var.

en iyisi her durumda çalışacak bir fonksiyon yazıp paylaşmak.
Kullanıcı avatarı
uğur alkan
Üye
Mesajlar: 227
Kayıt: 29 Ağu 2004 04:49
Konum: Istanbul

Mesaj gönderen uğur alkan »

Benim konum veritabanları hesap kitap değil, makina otomasyonu
benimde başım (.) ve (,) le dertte

Kod: Tümünü seç

X10.696 Y20.5 F600
X8.231 Y25.471
X7.476 Y15.691
X6.712 Y25.463
X4.251 Y20.463
X5.413 Y27.886
X5.415
X5.523 Y27.563
X5.63 Y27.271
X5.748 Y26.979
X5.863 Y26.721
X5.989 Y26.465
X6.11 Y26.243
X6.243 Y26.027
X6.369 Y25.846
X6.507 Y25.674
X6.637 Y25.535
X6.779 Y25.409
X6.911 Y25.312
X7.05 Y25.236
gibi string ifadeler var ve burada sayısal değerleri almam lazım hadi DecimalSeperator kullanarak çözün.... :D
Bazen sert rüzgarlar eser başını öne eğmekten asla korkma
ikut

merhaba

Mesaj gönderen ikut »

pro_imaj yazdı:
ikut yazdı: bizde ayraç virgul ama almanyada yada italyada değil. ? senin fonksiyon sadece tr için işi çözüyor. başka bir şeye yaramıyor..
Ben arakdaşın farklı bir dilde program yazmadığını düşünüyorum :D

Kolay gelsin.
Ben hep ingilizce windows kullandım. İhracat kısmındada durum bu... ne olcak şimdi?
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

@ugur alkan;

Senin probleminle topic konusu problem farklı şeyler..
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Re: merhaba

Mesaj gönderen pro_imaj »

ikut yazdı: Ben hep ingilizce windows kullandım. İhracat kısmındada durum bu... ne olcak şimdi?
Merhaba;
Ben olaya farklı bir açıdan bakmıştım ing kullanımını düşünememişim :oops:
Özür dilerim.

Bu konu hakkında ise BenŞöyle bir çözüm üretiyorum.

Kod: Tümünü seç

update Barkod set Miktar=replace(Miktar,',','.')
Barkod Tablesindeki Miktar kısmında Virgül olan herşeyi Nokta yapıyorum Onbinlerce kayıtı 3-5 sn içinde yapıyor bu bence iyi bir çözüm bulana kadar form create olayında kullanılabilir.

Saygılarımla
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