Delphi Can

Orjinalini görmek için tıklayınız: Sayıyı Yazıya Çevirme
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Belki bazı arkadaşların işine yarar düşüncesi ile paylaşıyorum. Daha kısasını yapan varsa lütfen paylaşsın.

implementation un hemen üzerine:

var
Form1: TForm1;
Rakamlar: array[0..9] of string =
('', 'bir','iki','üç','dört','beş','altı','yedi','sekiz','dokuz');

OnunKatlari: array[0..9] of string =
('', 'on', 'yirmi','otuz','kırk','elli','altmış','yetmiş','seksen','doksan');

ObekIsimleri: array[0..30] of string = ('', 'bin', 'milyon', 'milyar',
'trilyon', 'katrilyon', 'kentilyon', 'seksilyon', 'septilyon', 'oktilyon',
'nonilyon', 'desilyon', 'undesilyon', 'dodesilyon', 'dodesilyar',
'tredesilyon', 'tredesilyar', 'katordesilyon', 'katordesilyar',
'kendesilyon', 'kendesilyar',  'seksdesilyon', 'seksdesilyar',
'septendesilyon', 'septendesilyar', 'oktodesilyon', 'oktodesilyar',
'novemdesilyon', 'novemdesilyar',  'vigintilyon', 'vigintilyar');

 Kodlar:

procedure TForm1.edtSayiChange(Sender: TObject);
var KarakterSayisi, ObekSayisi, TSS, i: integer;
Sayimiz, Okunus: string;

begin
if trim(edtSayi.Text) = '' then
begin
memoOkunus.Text:= '';
exit;
end;
memoOkunus.Clear;

if Length(edtSayi.Text) > 90 then
begin
 ShowMessage('90 karakterden fazla sayı desteklenmemektedir!!!!');
 exit;
end;

KarakterSayisi:= Length(edtSayi.Text);
ObekSayisi:= Ceil((length(edtSayi.Text) / 3));
TSS:= (3-(length(edtSayi.Text)) mod 3) mod 3;
Sayimiz:= StringOfChar('0', TSS) + edtSayi.Text;


memoOkunus.Lines.BeginUpdate;
for i := ObekSayisi Downto 1  do
 begin
  if ObekOku(copy(Sayimiz, 1, 3)) + ObekIsimleri[i-1] = 'birbin' then
  Okunus:= 'bin' else Okunus:= ObekOku(copy(Sayimiz, 1, 3)) + ' ' + ObekIsimleri[i-1];
  if ObekOku(copy(Sayimiz, 1, 3)) <> '' then memoOkunus.Lines.Add(Okunus);
  Delete(Sayimiz, 1, 3);
 end;
  memoOkunus.Lines.EndUpdate;
end;


function TForm1.ObekOku(Obek: string): string;
var
YuzlerBasamagi, OnlarBasamagi, BirlerBasamagi: Byte;
YuzlerBasamagiOkunus, OnlarBasamagiOkunus, BirlerBasamagiOkunus: string;
begin
YuzlerBasamagi:= StrToInt(COPY(Obek, 1, 1));
OnlarBasamagi:= StrToInt(COPY(Obek, 2, 1));
BirlerBasamagi:= StrToInt(COPY(Obek, 3, 1));

YuzlerBasamagiOkunus:= Rakamlar[YuzlerBasamagi] + ' yüz';
if YuzlerBasamagi = 0 then YuzlerBasamagiOkunus:= '';
if YuzlerBasamagi = 1 then YuzlerBasamagiOkunus:= 'yüz';

BirlerBasamagiOkunus:= Rakamlar[BirlerBasamagi];
if BirlerBasamagi = 0 then BirlerBasamagiOkunus:= '';

Result:= Trim(YuzlerBasamagiOkunus + ' ' +
OnunKatlari[OnlarBasamagi]  +  ' ' + BirlerBasamagiOkunus);
end;

Görünüm:
0dd51e0f40.png
Teşekkürler.
paylaşmak güzel.