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
#2
Teşekkürler.
Cevapla
#3
Thumbs Up 
paylaşmak güzel.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  WebBrowser1 Gelen Veriyi Pdf e Çevirme sadoal351 6 1.178 26-07-2023, Saat: 18:38
Son Yorum: nguzeller
  Sesi Yazıya Çevirme 2023 gonulali 1 777 30-01-2023, Saat: 11:59
Son Yorum: Halil Han BADEM
  Html veya Xml pdf e çevirme ahmet6513 11 2.708 02-01-2023, Saat: 15:22
Son Yorum: ahmet6513
  PByteArray Tcolor cevirme? woywod 4 2.153 29-06-2021, Saat: 01:52
Son Yorum: maxpaynen
  HL7 veya ASTM formatını JSON a çevirme yokbi 0 623 12-06-2021, Saat: 22:57
Son Yorum: yokbi



Konuyu Okuyanlar: 1 Ziyaretçi