(11-05-2020, Saat: 03:15)Mikdad Adlı Kullanıcıdan Alıntı: Salemun aleyküm dostlarım. FastReport ta sum komutu ile toplanan bir sayıyı yazıya çevirmek gerekiyor. Ne yaptım sa olmadı. Forumda örnek kodlar vardı denedim ama çalışmadı. Mümkünse bu konuda bana yardımcı olur musunuz. Hersey içi. Teşekkür ederim
Merhabalar,
Şöyle de deneyebilirsiniz. Örnek olması açısından.
function YTL_yazi_ile(tutar: Double; tur: integer): string;
const
b1: ARRAY [1 .. 9] of string = ('Bir', 'İki', 'Üç', 'Dört', 'Beş',
'Altı', 'Yedi', 'Sekiz', 'Dokuz');
b2: ARRAY [1 .. 9] of string = ('On', 'Yirmi', 'Otuz', 'Kırk', 'Elli',
'Altmış', 'Yetmiş', 'Seksen', 'Doksan');
b3: ARRAY [1 .. 6] of string = ('Katrilyon', 'Trilyon', 'Milyar',
'Milyon', 'Bin', '');
var
gr: ARRAY [1 .. 6] of string[3];
sn: ARRAY [1 .. 6] of string;
bs: ARRAY [1 .. 3] of integer;
tutars, tutart, tutark, sonuct, sonuck: string;
i, l: integer;
begin
tutars := floattostr(tutar);
if pos(',', tutars) = 0 then
tutars := tutars + ',00';
tutart := copy(tutars, 1, (pos(',', tutars) - 1));
tutark := copy(tutars, (pos(',', tutars) + 1), 2);
tutart := stringofchar('0', (18 - (length(trim(tutart))))) + tutart;
tutark := tutark + stringofchar('0', (2 - (length(trim(tutark)))));
for i := 1 to 6 do
gr[i] := copy(tutart, 1 + (3 * (i - 1)), 3);
for l := 1 to 6 do
begin
bs[1] := strtoint(copy(gr[l], 1, 1));
if bs[1] <> 0 then
(if bs[1] <> 1 then sn[l] := sn[l] + b1[bs[1]] +
'Yüz' else sn[l] := sn[l] + 'Yüz');
bs[2] := strtoint(copy(gr[l], 2, 1));
if bs[2] <> 0 then
sn[l] := sn[l] + b2[bs[2]];
bs[3] := strtoint(copy(gr[l], 3, 1));
if bs[3] <> 0 then
sn[l] := sn[l] + b1[bs[3]];
if length(trim(sn[l])) <> 0 then
sn[l] := sn[l] + b3[l];
end;
if sn[5] = 'BirBin' then
sn[5] := 'Bin';
for i := 1 to 6 do
sonuct := sonuct + sn[i];
if strtoint(copy(tutark, 1, 1)) <> 0 then
sonuck := sonuck + b2[strtoint(copy(tutark, 1, 1))];
if strtoint(copy(tutark, 2, 1)) <> 0 then
sonuck := sonuck + b1[strtoint(copy(tutark, 2, 1))];
if tur = 0 then
begin
if sonuck <> '' then
result := sonuct + ' TL ' + sonuck + ' Krş. '
else
result := sonuct + ' TL';
end;
if tur = 1 then
result := sonuct + ' TL ';
if tur = 2 then
result := sonuck + ' Krş. ';
end;
/// frxReport1
procedure TForm1.frxReport1GetValue(const VarName: string; var Value: Variant);
begin
if VarName='yazi_ile' then YTL_yazi_ile (sizin_degeriniz,0);
//if VarName='yazi_ile' then YTL_yazi_ile (1000.50,0);
end;
Umarım faydalı olur.
Kolay gelsin.