basamaklarda 0 varsa kontrol etmiyorsun.
1001 için bir dene bak ne veriyor.
birbindokuzyüz filan bişi.
aşağıdaki kendi kodum. çalışıyor. istersen kullan. gördüğün gibi sen kodunda 0 gelebilecek dğerlere bakmamışın. başka hatalarda var ama inceleyecek zaman yok.
Kod: Tümünü seç
Function yaziyla(Curr : Currency) : String;
Const
Birler : Array [0..9] Of String [10] = ('', 'bir', 'iki', 'üç', 'dört',
'beş', 'altı', 'yedi', 'sekiz', 'dokuz');
Onlar : Array [0..9] Of String [10] = ('', 'on', 'yirmi', 'otuz',
'kırk', 'elli', 'altmış', 'yetmiş', 'seksen', 'doksan');
// Carpan : Array [1..6] of String [10]=('yüz','bin','milyon','milyar','trilyon','katrilyon');
Var
Str1 : String;
Sayac1 : Byte;
Pos : Byte;
Begin
Result := '';
Str1 := IntToStr(Trunc(Curr));
For sayac1 := 1 To Length(Str1) Do
Begin
Pos := (Length(Str1) - Sayac1) + 1;
If ((Pos Mod 3) = 0) And (Str1[Sayac1] <> '1') Then
Result := Result + Birler[StrToInt(Str1[Sayac1])];
If ((Pos Mod 3) = 0) And (Str1[Sayac1] <> '0') Then
Result := Result + 'yüz';
If ((Pos Mod 3) = 2) Then
Result := Result + Onlar[StrToInt(Str1[Sayac1])];
If ((Pos Mod 3) = 1) Then
Result := Result + Birler[StrToInt(Str1[Sayac1])];
Case Pos Of
4 :
Begin
If (Copy(Str1, Sayac1 - 3,2) = '00') And (Str1[Sayac1] = '1') Then
SetLength(Result, Length(Result) - 3);
If StrToInt(Copy(Str1, Sayac1 - 3,3)) > 0 Then
Result := Result + 'bin';
End;
7 :
If StrToInt(Copy(Str1, Sayac1 - 3,3)) > 0 Then
Result := Result + 'milyon';
10 :
If StrToInt(Copy(Str1, Sayac1 - 3,3)) > 0 Then
Result := Result + 'milyar';
13 :
If StrToInt(Copy(Str1, Sayac1 - 3,3)) > 0 Then
Result := Result + 'trilyon';
16 :
If StrToInt(Copy(Str1, Sayac1 - 3,3)) > 0 Then
Result := Result + 'katrilyon';
End;
End;
End;