السلام عليكم
الكود التالي يبين خوارزمية توليد أرقام الباركود من نمط EAN13
//========================================================== 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:= 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; 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; 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; //==========================================================
أرجو أن تعم الفائدة للجميع و للمهتمين بهذا الموضوع
