Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Sayıyı Yazıya Çevirme
#1
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
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  FastReport yazıya çevirme adelphiforumz 0 201 13-02-2018, Saat: 23:43
Son Yorum: adelphiforumz
  String Byte Dizisine Çevirme dicle_gsm 4 467 31-07-2017, Saat: 20:16
Son Yorum: dicle_gsm
  Sayıyı değiştirme serhat 7 561 12-06-2017, Saat: 23:51
Son Yorum: serhat
  Metini Sese Çevirme (TTS) AliZairov 3 745 11-04-2017, Saat: 00:18
Son Yorum: Lord_Ares



Konuyu Okuyanlar: 1 Ziyaretçi