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=9576)



كيف اقوم باستدعاء هذه الخوارزمية - anter2016 - 11-07-2018

السلام عليكــم ورحمـة الله وبركاتــه

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


PHP كود :
Function Genrate_Leading(pVal:String; pMax_Size:Byte;
 
                                pJust:String;pFill:String):String;
Var
 
 I, vLead_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
 
  I, vOdd_Num, vEven_Num, vChk_Digit : Integer;
 
  vArr_New : Array[1..12] of 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 :=0; vOdd_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;
 
//========================================================== 



RE: كيف اقوم باستدعاء هذه الخوارزمية - AX302 - 12-07-2018

السلام عليكم

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


PHP كود :
Edit1.Text := Barcode_Gen13(ADouble); 



RE: كيف اقوم باستدعاء هذه الخوارزمية - anter2016 - 12-07-2018

السلام عليكم

للاسف هذه لاتصلح


RE: كيف اقوم باستدعاء هذه الخوارزمية - Agmcz - 12-07-2018

إضافة الوحدة StrUtils
الدالة الآساسية Barcode_Gen13
الإستخدام هكذا
PHP كود :
Edit1.text := Barcode_Gen13(123456); 

PHP كود :
uses
  StrUtils
;

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

Function Genrate_Leading(pVal:String; pMax_Size:Byte;
 
                                pJust:String;pFill:String):String;
Var
 
 I, vLead_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
 
  I, vOdd_Num, vEven_Num, vChk_Digit : Integer;
 
  vArr_New : Array[1..12] of 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 :=0; vOdd_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(Sender: TObject);
begin
  Edit1
.text := Barcode_Gen13(123456);
end; 



RE: كيف اقوم باستدعاء هذه الخوارزمية - anter2016 - 12-07-2018

السلام عليكم
يعني كل مرة اريد تغير ذالك (123456)برمجيا بحيث كل مرة يشكل رقم مغاير لارقم الاول من فضلك اذا امكن

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

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

end.