31-01-2017, Saat: 21:22
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:
Kodlar:
Görünüm:

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:
