Kullanımını yazmıyorum gayet açık :)
function ParayiTurkceYaz(amount: Currency):String;
const
n=9;
Basamak:array[0..n]of String=('','Bin','Milyon','Milyar','Trilyon',
'Katrilyon','Kentrilyon','','','');
Onlar:array[0..n]of String=('','On','Yirmi','Otuz','Kırk','Elli',
'Altmış','Yetmiş','Seksen','Doksan');
Birler:array[0..n]of String=('','Bir','İki','Üç','Dört','Beş','Altı',
'Yedi','Sekiz','Dokuz');
var
temp, lira, kurus:String;
sl: TStringList;
UcHane: Word;
Yed, UcluHane: String;
i, HangiBasamak: Byte;
Negatif, BasamakYaz: Boolean;
{Ön fonksiyonlar başlangıcı}
function Modu(var Sayisi:Word):Byte;
begin
Result:= Sayisi mod 10;
Sayisi:= Sayisi div 10;
end;
function SayiyiTurkceyeCevir(Sayi:Int64):String;
begin
if Sayi = 0 then
Result:=''
else
begin
Negatif:= Sayi<0;
if Negatif then Sayi:= -Sayi;
Result:= '';
HangiBasamak:= 0;
while Sayi>0 do begin
UcHane:= Sayi mod 1000;
Sayi:= Sayi div 1000;
BasamakYaz:= UcHane>0;
repeat
UcluHane:= '';
if ((HangiBasamak=1) and (UcHane=1)) then Break;//sadece bin yazılacaksa
i:=Modu(UcHane);
UcluHane:=Birler[i];//3 hanenin 1. si
i:=Modu(UcHane);
UcluHane:=Onlar[i]+UcluHane; //3 hanenin 2. si
i:=Modu(UcHane);
if i>0 then Yed:= 'Yüz' else Yed:= '';
if i>1 then Yed:= Birler[i] + Yed;
UcluHane:= Yed + UcluHane;//3 hanenin 3. sü
until True;
if BasamakYaz then Result:= UcluHane + Basamak[HangiBasamak] + Result;
inc(HangiBasamak);
end;
if Negatif then Result:= 'Eksi' + Result;
end;
end;
begin
{Ön fonksiyonlar sonu}
temp:= CurrToStrF(amount, ffNumber, 2);
temp:= temp.Replace(FormatSettings.ThousandSeparator, '');
sl := TStringList.Create;
sl.Delimiter := FormatSettings.DecimalSeparator;
sl.DelimitedText := temp;
lira:= SayiyiTurkceyeCevir(StrToInt64(sl[0]));
kurus:= SayiyiTurkceyeCevir(StrToInt64(sl[1]));
temp:='';
if (Length(lira)>0) then temp:= lira + ' Türk Lirası ';
if (length(kurus)>0) then temp:= temp + kurus + ' Kuruş';
if (String.IsNullOrEmpty(temp)) then temp:='Sıfır';
FreeAndNil(sl);
result:= temp;
end;
Hiç yorum yok:
Yorum Gönder