Burada rakamların okunuşunu (özellikle fatura tutarlarının yazıyla kısmı için) bulan kodu vermek istedim. Hatta aramak isterseniz tonlarca benzeri koda rastlayabilirsiniz. Oturup kendinizde yazabilirsiniz ama ben size kolaylık olsun diye bir örnek vermek istiyorum. Delphi fonksiyon olarak yazılan bir fonksiyon:
Eğer aramak isterseniz benzeri bir kodu her yerden bulabilirsiniz.
Kod: Tümünü seç
function Rakam(Sayi:Int64):String;
const n=9;
Basamak:array[0..n]of String=('','Bin','Milyon','Milyar','Trilyon','Katrilyon','Kentrilyon','Sekstilyon','Septilyon','Oktilyon');
Onlar:array[0..n]of String=('','On','Yirmi','Otuz','Kırk','Elli','Altmış','Yetmiş','Seksen','Doksan');
Birler:array[0..n]of String=('','Bir','İki','Üç','Dört','Beş','Altı','Yedi','Sekiz','Dokuz');
var i:Byte; UcHane:Word; Yed,UcluHane:String; HangiBasamak:Byte;
Negatif,BasamakYaz:Boolean;
function Modu(var Sayisi:Word):Byte;
begin
Result:=Sayisi mod 10;
Sayisi:=Sayisi div 10;
end;
begin
if Sayi=0 then
Result:='Sıfır'
else begin
Negatif:=Sayi<0;
if Negatif then Sayi:=-Sayi;
Result:='';
HangiBasamak:=0;
while Sayi>0 do begin
UcHane:=Sayi mod 1000; Sayi:=Sayi div 1000;
BasamakYaz:=UcHane>0;
repeat
UcluHane:='';
if ((HangiBasamak=1) and (UcHane=1)) then Break;//sadece bin yazılacaksa
i:=Modu(UcHane); UcluHane:=Birler[i]; //3 hanenin 1. si
i:=Modu(UcHane); UcluHane:=Onlar[i]+UcluHane; //3 hanenin 2. si
i:=Modu(UcHane);
if i>0 then Yed:='Yüz' else Yed:='';
if i>1 then Yed:=Birler[i]+Yed;
UcluHane:=Yed+UcluHane;//3 hanenin 3. sü
until True;
if BasamakYaz then Result:=UcluHane+Basamak[HangiBasamak]+Result;
inc(HangiBasamak);
end;
if Negatif then Result:='Eksi'+Result
else //Delete(Result,1,1);
end;
end;
Kod: Tümünü seç
CREATE FUNCTION RakamOku (@Sayi bigint)
RETURNS nvarchar(300)
AS
BEGIN
DECLARE @n int,@i int,@UcHane int,@Yed nvarchar(300),@UcluHane nvarchar(300),
@HangiBasamak int,@Negatif bit,@BasamakYaz bit,@SONUC nvarchar(300)
SET @n=9
SET @SONUC=NULL
BEGIN
SET @SONUC=''
IF (@Sayi=0) SET @SONUC='Sıfır' ELSE BEGIN
IF (@Sayi<0) BEGIN
SET @Negatif=1
SET @Sayi=-@Sayi
END ELSE SET @Negatif=0
SET @HangiBasamak=0;
WHILE (@Sayi>0) BEGIN
SET @UcHane=@Sayi % 1000
SET @Sayi=@Sayi / 1000
IF (@UcHane>0) SET @BasamakYaz=1 ELSE SET @BasamakYaz=0
IF ((@HangiBasamak=1) and (@UcHane=1)) SET @UcluHane=''
ELSE BEGIN
SET @UcluHane=''
SET @i=@UcHane%10 SET @UcHane=@UcHane/10
SET @UcluHane=CASE @i
WHEN 1 THEN 'Bir'
WHEN 2 THEN 'İki'
WHEN 3 THEN 'Üç'
WHEN 4 THEN 'Dört'
WHEN 5 THEN 'Beş'
WHEN 6 THEN 'Altı'
WHEN 7 THEN 'Yedi'
WHEN 8 THEN 'Sekiz'
WHEN 9 THEN 'Dokuz'
ELSE '' END
SET @i=@UcHane%10 SET @UcHane=@UcHane/10
SET @UcluHane=CASE @i
WHEN 1 THEN 'On'
WHEN 2 THEN 'Yirmi'
WHEN 3 THEN 'Otuz'
WHEN 4 THEN 'Kırk'
WHEN 5 THEN 'Elli'
WHEN 6 THEN 'Altmış'
WHEN 7 THEN 'Yetmiş'
WHEN 8 THEN 'Seksen'
WHEN 9 THEN 'Doksan'
ELSE '' END+@UcluHane
SET @i=@UcHane%10 --SET @UcHane=@UcHane/10
IF (@i>0) SET @Yed='Yüz' ELSE SET @Yed=''
IF (@i>1) SET @Yed=CASE @i
WHEN 1 THEN 'Bir'
WHEN 2 THEN 'İki'
WHEN 3 THEN 'Üç'
WHEN 4 THEN 'Dört'
WHEN 5 THEN 'Beş'
WHEN 6 THEN 'Altı'
WHEN 7 THEN 'Yedi'
WHEN 8 THEN 'Sekiz'
WHEN 9 THEN 'Dokuz'
ELSE '' END+@Yed
SET @UcluHane=@Yed+@UcluHane;
END
IF (@BasamakYaz=1) SET @SONUC=@UcluHane+CASE @HangiBasamak
WHEN 1 THEN 'Bin'
WHEN 2 THEN 'Milyon'
WHEN 3 THEN 'Milyar'
WHEN 4 THEN 'Trilyon'
WHEN 5 THEN 'Katrilyon'
WHEN 6 THEN 'Kentrilyon'
WHEN 7 THEN 'Sekstilyon'
WHEN 8 THEN 'Septilyon'
WHEN 9 THEN 'Oktilyon'
ELSE '' END+@SONUC
SET @HangiBasamak=@HangiBasamak+1
END
IF (@Negatif=1) SET @SONUC='Eksi'+@SONUC
END
END
RETURN @SONUC
END
GO