الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

توليد باركود من نمط EAN13

مغلق
بدأه amersy في 6 مارس 2005 · 2 رد · 1,821 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

الكود التالي يبين خوارزمية توليد أرقام الباركود من نمط 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;
 //==========================================================

أرجو أن تعم الفائدة للجميع و للمهتمين بهذا الموضوع

تم تعديل هذه المشاركة بواسطة amersy في 6 مارس 2005 في 11:51

الشام الله حاميها...

أنا الدمشقيُّ.. لو شرحتمُ جسدي

لسـالَ منهُ عناقيـدٌ.. وتفـّاحُ

و لو فتحـتُم شراييني بمديتكـم

سمعتمُ في دمي أصواتَ من راحوا

مآذنُ الشّـامِ تبكـي إذ تعانقـني

و للمـآذنِ.. كالأشجارِ.. أرواحُ

#2

شكرا لك

#3

بارك الله فيك

..................بسم الله الرحمن الرحيم..................

وتعاونوا على البر والتقوى ولا تعاونوا على الإثم والعدوان

.............................................................................................................................

لنبدا دورة دلفي

سلسلة تعلم برمجة Pascal , تعلم اساسيات الباسكال

التحكم بمنفذ الطابعة عن طريق الدلفي

سلسلة دروس تعلم قواعد بيانات Midas

هيا لنبدأ بالApi

أفكار سريعة, مجموعة شفرات صغيرة وفاعله لدلفي

كتب + مواقع ::: مراجع مهمة للغة دلفي, مجموعة كتب مجانية + مواقع مفيدة

مكتبه الأكواد, أكواد وبرامج دلفي

.............................................................................................................................

18_07_05_10_53_18_1121752398da3wa_18.gif

هذا الموضوع مغلق.

مواضيع مشابهة