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: