kuruşlu sayıyı yazıya çevirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

kuruşlu sayıyı yazıya çevirme

Mesaj gönderen naile »

:ara yaptım bulamadım :)

Sayıyı yzıya dönüştürecek bir fonksiyon arıyorum elinde hazır olan vardır belki diye düşündüm ama sayı kuruşlu olacak.

Teşekkürler
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Arşivimden :P

Kullanımı
sayi :=125,45;
rakyazf(sayi,0); // YÜZYİRMİBEŞ.TL / KIRKBEŞ.KR
rakyazf(sayi,1); // YÜZYİRMİBEŞ.TL
rakyazf(sayi,2); // KIRKBEŞ.KR

Kod: Tümünü seç

/// ----------------------------------------------------- ///
function rakyazf(tutar:real; tur:integer):string;
  const
    b1:ARRAY [1..9] of string =
      ('BİR','İKİ','ÜÇ','DÖRT','BEŞ','ALTI','YEDİ','SEKİZ','DOKUZ');
    b2:ARRAY [1..9] of string =
      ('ON','YİRMİ','OTUZ','KIRK','ELLİ','ALTMIŞ','YETMİŞ','SEKSEN','DOKSAN');
    b3:ARRAY [1..6] of string =
      ('KATRİLYON','TRİLYON','MİLYAR','MİLYON','BİN','');
  var
    gr:ARRAY [1..6] of string[3];
    sn:ARRAY [1..6] of string;
    bs:ARRAY [1..3] of integer;
    tutars, tutart, tutark , sonuct, sonuck: string;
    i,l: integer;

  begin
     tutars:=floattostr(tutar);
     if pos(',',tutars)=0 then tutars:=tutars+',00';
     tutart:=copy(tutars,1,(pos(',',tutars)-1));
     tutark:=copy(tutars,(pos(',',tutars)+1),2);
     tutart:=stringofchar('0',(18-(length(trim(tutart))))) + tutart;
     tutark:=tutark + stringofchar('0',( 2-(length(trim(tutark)))));
     for i:=1 to 6 do gr[i]:=copy(tutart,1+(3*(i-1)),3);

     for l:=1 to 6 do
      begin
        bs[1]:=strtoint(copy(gr[l],1,1));
        if bs[1]<>0 then(if bs[1]<>1 then sn[l]:=sn[l]+b1[bs[1]]+'YÜZ' else sn[l]:=sn[l]+'YÜZ');
        bs[2]:=strtoint(copy(gr[l],2,1));
        if bs[2]<>0 then sn[l]:=sn[l]+b2[bs[2]];
        bs[3]:=strtoint(copy(gr[l],3,1));
        if bs[3]<>0 then sn[l]:=sn[l]+b1[bs[3]];
        if length(trim(sn[l]))<>0 then sn[l]:=sn[l]+b3[l];
      end;

     if sn[5]='BİRBİN' then sn[5]:='BİN';
     for i:=1 to 6 do sonuct:=sonuct+sn[i];
     if strtoint(copy(tutark,1,1))<> 0 then sonuck:=sonuck + b2[strtoint(copy(tutark,1,1))];
     if strtoint(copy(tutark,2,1))<> 0 then sonuck:=sonuck + b1[strtoint(copy(tutark,2,1))];
     if tur=0 then result:=sonuct + '.TL / ' + sonuck + '.KR ';
     if tur=1 then result:=sonuct + '.TL ';
     if tur=2 then result:=sonuck + '.KR ';
  end;
/// ----------------------------------------------------- ///
Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Teşekkürler
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: kuruşlu sayıyı yazıya çevirme

Mesaj gönderen akuyumcu63 »

sayın husonet; yardımcı olabilirmisiniz.

sayı :real olarak tanımlı

SAYI:=Table1BAKIYE2.Value;
Table2YAZIYLATUTAR2.AsString:=RAKYAZF(SAYI,0); //bakiye2 ile yazıylatutar2 alanları calculadetfield olarak tanımlı

kod yukarıdaki gibi oncalcfield te çalıştırılınca is not a valid integer value hatası alıyorum. bakiye2 deki değeri yazıylatutur2 alanında yazıya dönüştürmek istiyorum. kolay gelsin,
İsteyen, yapabildiğinden daha fazlasını yapar.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: kuruşlu sayıyı yazıya çevirme

Mesaj gönderen sabanakman »

YAZIYLATUTAR2 alan tipiniz sayısal ama siz buraya string değer olarak rakamın okunuşunu girmektesiniz. Bu alan tipini String olarak değiştirirseniz mesele hallolabilir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla