Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
FastReport yazıya çevirme
#1
eskileri karıştırırken karşıma çıktı belki birine lazım olur

FastReport Code Kısmına yazılan
function Basamak(const i:Int):String;
begin
 case i of
   1:Result:='Bin';
   2:Result:='Milyon';  
   3:Result:='Milyar';  
   4:Result:='Trilyon';  
   5:Result:='Katrilyon';  
   6:Result:='Kentrilyon';  
 else
   Result:='';                                             
 end;
end;

function Onlar(const i:Int):String;
begin
 case i of
   1:Result:='On';
   2:Result:='Yirmi';  
   3:Result:='Otuz';  
   4:Result:='Kırk';  
   5:Result:='Elli';  
   6:Result:='Altmış';
   7:Result:='Yetmiş';  
   8:Result:='Seksen';  
   9:Result:='Doksan';  
 else
   Result:='';                                             
 end;
end;

function Birler(const i:Integer):String;
begin
 case i of
   1:Result:='Bir';  
   2:Result:='İki';  
   3:Result:='Üç';  
   4:Result:='Dört';  
   5:Result:='Beş';  
   6:Result:='Altı';  
   7:Result:='Yedi';  
   8:Result:='Sekiz';  
   9:Result:='Dokuz';  
 else
   Result:='';                                             
 end;
end;

function RakamOku(Sayi:Integer):String;
const n=9;
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;


FastReport'ta Tutarı elde ettiğin nesnenin "OnAfterPrint" kısmı "memoYazdir" yazının görüneceği nesne oluyor
var
 sSayi, sTmp, sYaziTL, sYaziKurus, sTL, sKurus:string;
 i, iTL, iKurus : Integer;
 bSwcAyrac : Boolean;
begin
 sKurus     := '';
 sTL        := '';
 sSayi      := '';
 sSayi      := Trim(memoGenel.Text);
 sYaziTL    := '';
 sYaziKurus := '';
 iTL        := 0;
 iKurus     := 0;

 bSwcAyrac := False;
 i := Length(sSayi);
 while i > 0 do
 begin
     if sSayi[I] in ['0'..'9'] then
     begin
       if bSwcAyrac = False then
         sKurus := sKurus + sSayi[I]
       else
         sTL := sTL + sSayi[I];
     end
     else
     begin
       if (Length(sSayi) - I) <= 2 then
         bSwcAyrac := True;
     end;
     Dec(I);
 end;

 sTmp := '';
 if sKurus <> '' then
   for I := Length(sKurus) downto 1 do
     sTmp := sTmp + sKurus[I];
 sKurus := sTmp;
 sTmp := '';
 if sTL <> '' then
 for I := Length(sTL) downto 1 do
   sTmp := sTmp + sTL[I];
 sTL := sTmp;

 if ( (sTL = '') and (sKurus <> '') ) then
 begin
     sTL := sKurus;
     sKurus := '';
 end;

 if sTL <> '' then
   iTL    := StrToInt(sTL);
 if sKurus <> '' then
   iKurus := StrToInt(sKurus);

 sYaziTL    := RakamOku(iTL);
 sYaziKurus := RakamOku(iKurus);
memoYazdir.Text:= ' Fatura Genel Toplamı : Yalnız '+sYaziTL+'TL ' +sYaziKurus+'Kuruş ';
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#2
merhaba;
öncelikle paylaşım için teşekkürler,

sYaziTL := RakamOku(iTL);<br>
sYaziKurus := RakamOku(iKurus);<br>

burada hata alıyorum. RakamOku yu bulamadım.
WWW
Cevapla
#3
(08-02-2020, Saat: 15:10)akuyumcu63 Adlı Kullanıcıdan Alıntı: merhaba;
öncelikle paylaşım için teşekkürler,

sYaziTL    := RakamOku(iTL);<br>
sYaziKurus := RakamOku(iKurus);<br>

burada hata alıyorum. RakamOku yu bulamadım.


düzenleme yaptım
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#4
(08-02-2020, Saat: 17:54)adelphiforumz Adlı Kullanıcıdan Alıntı:
(08-02-2020, Saat: 15:10)akuyumcu63 Adlı Kullanıcıdan Alıntı: merhaba;
öncelikle paylaşım için teşekkürler,

sYaziTL    := RakamOku(iTL);<br>
sYaziKurus := RakamOku(iKurus);<br>

burada hata alıyorum. RakamOku yu bulamadım.


düzenleme yaptım

merhaba;
yaptığınız düzeltme için teşekkür ederim.
bir projemde kullanmaya çalışıyorum. bir türlü rakamın yazıyla yazılacağı kutuya yazımını sağlayamadım. çeşitli denemeler yaptım. 
birTL SıfırKuruş dışında bir sonuç üretemedim.

nasıl kullandığımı anlatayım;
1. fonksiyonları raporun kod kısmına kopyalıyorum.
2. toplam tutarın yazılı olduğu ToplamTutar adındaki memo kutusunun onAfterPrint olayına ikinci kodu yazıyorum.

sonucu memoYazdir Text kutusuna çağırıyorum.
WWW
Cevapla
#5
ilgli bandın onAfterPrint olayına yazınca kod çalıştı. 

toplamlar için SysMemo veya Memo nesnesini kullanıyorum. ilgili sütunu toplatıyorum. şöyle bir hata ile karşılaştım, örneğin : 672389,4586 rakamını 6723894586 okuyor.  'is not a valid integer value' hatası veriyor. integer sayının limitlerinin dışına çıktığını söylüyor. sayı limitler içinde kalınca hata vermiyor.

 sSayi  := Trim(ToplamTutar.Text);  şeklinde atamayı yapınca memo nun içine yazılan kodu okuyor. rakamsal bir veri gelmiyor.
 sSayi  := FloatToStr(ToplamTutar.Value); şeklinde atamayı yapınca memo nun içindeki rakamsal veriyi okuyor ve yukarıda belirttiğim hata oluşuyor

toplam tutarı Queryden hesaplatıp rapora aktarabilirim. tüm işlemi rapor üzerinden yapmak istiyorum. 

bir çözümünüz varsa paylaşırsanız sevinirim. 

kolay gelsin.
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  FastReport sayıyı yazıya çevirmek Mikdad 2 212 11-05-2020, Saat: 15:53
Son Yorum: adelphiforumz
Question fastreport pdf ve excell export Ekvador 6 451 03-05-2020, Saat: 22:28
Son Yorum: mcuyan
  fastReport sayfa sayısını okuma akuyumcu63 3 364 11-04-2020, Saat: 15:04
Son Yorum: hi_selamlar
  Hex bir değeri, 37 bit integer değere çevirme Adem Kurt 5 663 14-01-2020, Saat: 09:30
Son Yorum: adelphiforumz
  FastReport -> DesignReport için frxDesigner Belirleme hi_selamlar 7 1.060 03-12-2019, Saat: 18:22
Son Yorum: hi_selamlar



Konuyu Okuyanlar: 1 Ziyaretçi