delphi4arab منتديات دلفي للعرب
تحويل وحدة الى فاست ريبورت - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : تحويل وحدة الى فاست ريبورت (/showthread.php?tid=6956)



تحويل وحدة الى فاست ريبورت - m.rabee - 19-04-2015

السلام عليكم

قام السيد محمد مهند عبادي مشكوراً ببرمجة هذه الوحدة في دلفي
احاول استخدامها في الفاست ريبورت بدون دلفي ولكن لم انجح
فما المطلوب تعديله لكي تعمل ضمن فاست ريبورت؟
ولكم الشكر

كود :
unit Unit2; // دالة التفقيط الآلي // برمجة محمد مهند عبادي 2003 interface uses SysUtils,StrUtils; Function words(D : Double; F1 : String = 'واحدة'; F2 :String = 'واحدتين' ; F3 : String = 'واحدات' ; D1 : String = 'جزء' ; D2 : String = 'جزئين'; D3: String = 'أجزاء'; SayJust : Boolean = True) : String; implementation Function words(D : Double; F1 : String = 'واحدة'; F2 :String = 'واحدتين' ; F3 : String = 'واحدات' ; D1 : String = 'جزء' ; D2 : String = 'جزئين'; D3: String = 'أجزاء'; SayJust : Boolean = True) : String; Var P,P1,P2,P3,P4,w,w1,w2,w3,N,n1 : String; SD : Int64; (*------------------------------------------------------------------------*) Function Swords(N, U1, U2, U3 : String) : String; Type TF = array[0..2,0..9] of String; Const FNO : TF = (('','واحد','إثنان','ثلاثة','أربعة','خمسة','ستة','سبعة','ثمانية','تسعة'), ('','عشر','عشرون','ثلاثون','أربعون','خمسون','ستون','سبعون','ثمانون','تسعون'), ('','مائة','مائتين','ثلاثمائة','أربعمائة','خمسمائة','ستمائة','سبعمائة','ثمانمائة','تسعمائة')); Var s: array[1..3] of Byte; PU : array[0..2] of String; A : Tf; w1,w2,f : String; E : integer; Begin A := FNO; Pu[0] := ''; PU[1] := U1 ; Pu[2] := U2 ; E := StrToInt(N); If E < 3 then Swords := pu[E] Else Begin N := leftstr('000',3-length(n)) + N ; For E := 1 to 3 Do S[E] := StrToInt(n[4-E]); If (s[2] = 0) or (s[1] = 0) Then W2 := '' Else W2 := ' و '; If (s[3] = 0) Or (s[1]+S[2] = 0) Then W1 := '' Else W1 := ' و '; If S[2] = 1 Then Begin A[0,1] := 'أحد '; A[0,2] := 'إثنا ' ; W2 := ' '; End; Case strToInt(n[2]+n[3]) of 0 : Begin A[2, 2] := 'مائتا '; F := U1; End; 3..10 : F := U3; 1,2, 11..99 : F := U1; end; swords := A[2, S[3]] + w1 + A[0, S[1]] + w2 + A[1, S[2]] + ' ' + F; End; End; (*------------------------------------------------------------------------*) Begin If D > 0 Then Begin Sd := Trunc(D); p := Swords(inttostr(round((d-sd)*100)),D1,D2,D3); N := leftstr('000000000000',12-length(floattostr(Sd))) + floattostr(Sd) ; P1 := Swords(Copy(N, 10, 3), F1, F2, F3); P2 := Swords(Copy(N, 7, 3), 'ألف', 'ألفان', 'آلاف'); P3 := Swords(copy(N, 4, 3), 'مليون', 'مليونان', 'ملايين'); P4 := Swords(copy(N, 1, 3), 'مليار', 'ملياران', 'مليارات'); If (P4 = '') Or (P1 + P2 + P3 = '') Then w3 := '' Else w3 := ' و '; If (P3 = '') Or (P1 + P2 = '') Then w2 := '' Else w2 := ' و '; If (P2 = '') Or (P1 = '') Then w1 := '' Else w1 := ' و '; If P1 = '' Then P1 := ' ' + F1; If P = '' Then w := '' Else w := ' و '; N := P4 + w3 + P3 + w2 + P2 + w1 + P1 + w + P; If SayJust Then words := 'فقط ' + N + ' لاغير'Else Words := N; end; End; end.