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.
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.
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.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Fastreport İçindekiler Sayfası Oluşturma [ÇÖZÜLDÜ] bydelphi 1 236 18-03-2024, Saat: 12:11
Son Yorum: bydelphi
  Fastreport Masterdata Column mukoly 7 565 23-02-2024, Saat: 19:54
Son Yorum: hi_selamlar
  Fastreport Barkod Tasarımı delphiX14 7 482 31-01-2024, Saat: 20:10
Son Yorum: mcuyan
  FastReport etiketi yan yana yazdırma ( Kapandı ) cinarbil 5 438 12-01-2024, Saat: 17:03
Son Yorum: cinarbil
  Fastreport Page Backround İmage bydelphi 2 412 25-12-2023, Saat: 12:42
Son Yorum: bydelphi



Konuyu Okuyanlar: 1 Ziyaretçi