كيف اقوم باستدعاء هذه الخوارزمية
#1
السلام عليكــم ورحمـة الله وبركاتــه

 كيف اقوم باستدعاء هذه الخوارزمية في edit 


PHP كود :
Function Genrate_Leading(pVal:StringpMax_Size:Byte;
 
                                pJust:String;pFill:String):String;
Var
 
 IvLead_Size:Integer;
 
 vFill String;
Begin
  vLead_Size 
:= (pMax_Size-1)-(Length(pVal));
 
 IF vLead_Size 0 Then vLead_Size := 0;
 
 pVal := Copy(pVal,1,pMax_Size-1);
 
 vFill := '2';
 
 For I:=0 to (vLead_Size-1) Do
 
  vFill := vFill pFill;
 
 IF UpperCase(pJust) = 'L' Then Result := pVal+vFill Else
 
 IF UpperCase(pJust) = 'R' Then Result := vFill+pVal;
End;
 
//==========================================================



Function Barcode_Gen13(New_Seq Double):String;
Var
 
  IvOdd_NumvEven_NumvChk_Digit Integer;
 
  vArr_New : Array[1..12of Integer;
 
  vNew String;
Begin
  vNew 
:= Genrate_Leading(FloatToStr(New_Seq),12,'R','0'); // Generating the
 
                                                                                                         //  Leading zeros

 
 For I:=1 to 12 do                                        // Fill the Digits in an Array to type cast from string to Integer
 
 Begin
    vArr_New
[I]:= StrToInt(Copy(vNew,I,1));
 
 End;
 
 vEven_Num :=0vOdd_Num := 0;

 
 For I:=2 to 12 do                       // Get The Total of the even Numbers
 
 Begin
    IF 
(I Mod 2)<>0 Then Continue;
 
   vEven_Num := vEven_Num vArr_New[I];
 
 End;

 
 For I:=1 to 11 do                       // Get The Total of the Odd Numbers
 
 Begin
    IF 
(I Mod 2)=0 Then Continue;
 
   vOdd_Num := vOdd_Num vArr_New[I];
 
 End;
 
 vChk_Digit := (vEven_Num*3)+vOdd_Num// The Equetion to calculate the Check Digit
 
 vChk_Digit := StrToInt(RightStr(IntToStr(vChk_Digit),1));
 
 vChk_Digit := 10-(vChk_Digit);
 
 IF vChk_Digit 10 Then vChk_Digit := 0;
 
                                       // ENd OF Equition.
 
 Result := vNew+IntToStr(vChk_Digit);


End;
 
//========================================================== 
ينبغي للعالم ان يخاطب الجاهل مخاطبةالطبيب للمريض .
سقراط.
الرد
#2
السلام عليكم

PHP كود :
Edit1.Text := Genrate_Leading(AStr,AByte,AStr,AStr); 


PHP كود :
Edit1.Text := Barcode_Gen13(ADouble); 
:: من يملك المعلومة يملك الميدان :: 
[-] كل من 1 user says قال شكرا ل AX302 على المشاركة المفيدة
  • anter2016
الرد
#3
السلام عليكم

للاسف هذه لاتصلح
ينبغي للعالم ان يخاطب الجاهل مخاطبةالطبيب للمريض .
سقراط.
الرد
#4
إضافة الوحدة StrUtils
الدالة الآساسية Barcode_Gen13
الإستخدام هكذا
PHP كود :
Edit1.text := Barcode_Gen13(123456); 

PHP كود :
uses
  StrUtils
;

//==========================================================

Function Genrate_Leading(pVal:StringpMax_Size:Byte;
 
                                pJust:String;pFill:String):String;
Var
 
 IvLead_Size:Integer;
 
 vFill String;
Begin
  vLead_Size 
:= (pMax_Size-1)-(Length(pVal));
 
 IF vLead_Size 0 Then vLead_Size := 0;
 
 pVal := Copy(pVal,1,pMax_Size-1);
 
 vFill := '2';
 
 For I:=0 to (vLead_Size-1) Do
 
  vFill := vFill pFill;
 
 IF UpperCase(pJust) = 'L' Then Result := pVal+vFill Else
 
 IF UpperCase(pJust) = 'R' Then Result := vFill+pVal;
End;
 
//==========================================================
Function Barcode_Gen13(New_Seq Double):String;
Var
 
  IvOdd_NumvEven_NumvChk_Digit Integer;
 
  vArr_New : Array[1..12of Integer;
 
  vNew String;
Begin
  vNew 
:= Genrate_Leading(FloatToStr(New_Seq),12,'R','0'); // Generating the
 
                                                                                                         //  Leading zeros

 
 For I:=1 to 12 do                                        // Fill the Digits in an Array to type cast from string to Integer
 
 Begin
    vArr_New
[I]:= StrToInt(Copy(vNew,I,1));
 
 End;
 
 vEven_Num :=0vOdd_Num := 0;

 
 For I:=2 to 12 do                       // Get The Total of the even Numbers
 
 Begin
    IF 
(I Mod 2)<>0 Then Continue;
 
   vEven_Num := vEven_Num vArr_New[I];
 
 End;

 
 For I:=1 to 11 do                       // Get The Total of the Odd Numbers
 
 Begin
    IF 
(I Mod 2)=0 Then Continue;
 
   vOdd_Num := vOdd_Num vArr_New[I];
 
 End;
 
 vChk_Digit := (vEven_Num*3)+vOdd_Num// The Equetion to calculate the Check Digit
 
 vChk_Digit := StrToInt(RightStr(IntToStr(vChk_Digit),1));
 
 vChk_Digit := 10-(vChk_Digit);
 
 IF vChk_Digit 10 Then vChk_Digit := 0;
 
                                       // ENd OF Equition.
 
 Result := vNew+IntToStr(vChk_Digit);
End;
 
//==========================================================

procedure TForm1.Button1Click(SenderTObject);
begin
  Edit1
.text := Barcode_Gen13(123456);
end
سبحان الله وبحمده سبحان الله العظيم
[-] كل من 1 user says قال شكرا ل Agmcz على المشاركة المفيدة
  • anter2016
الرد
#5
السلام عليكم
يعني كل مرة اريد تغير ذالك (123456)برمجيا بحيث كل مرة يشكل رقم مغاير لارقم الاول من فضلك اذا امكن

PHP كود :
السلام عليكم

procedure TForm1
.Button1Click(SenderTObject);
var 
 int   Integer;
 
     i     Integer;
begin
for     i:= 1 to 5 do
 
 begin
    int 
:= Random(1000000);
 
   Edit1.text := Barcode_Gen13(int);
end;
end;

end
ينبغي للعالم ان يخاطب الجاهل مخاطبةالطبيب للمريض .
سقراط.
الرد


التنقل السريع :


مستخدمين يتصفحوا هذا الموضوع: 1 ضيف