نمایش نتایج 1 تا 17 از 17

نام تاپیک: كسي روش يا برنامه چك كردن كد ملي را دارد؟

  1. #1
    کاربر دائمی آواتار ali_abbasi22145
    تاریخ عضویت
    آذر 1382
    محل زندگی
    يك جايي در پايتخت
    پست
    1,350

    كسي روش يا برنامه چك كردن كد ملي را دارد؟

    سلام
    كد ملي ما از 10 رقم تشكيل شده است و رقم آخر رقم چك كردن است و الگوريتم يا روشي جهت درست بدون آن استفاده مي شود.
    كسي آن روش يا بهتر اينكه برنامه چك كردن كد ملي در دلفي را دارد؟
    مثلا اين كد ملي غلط است: 1111111111

  2. #2

    Cool نقل قول: كسي روش يا برنامه چك كردن كد ملي را دارد؟

    سلام دوست من

    توی انتخابات الکترونیک که برگذار شد یه برنامه داشتیم که با اینترنت چک میکرد که کد ملی معتبره یا نه اما تابعشو ندارم

    اگه میخوای بگو این برنامه رو بهت بدم اما سورسش همراش نیست.
    یه روش دیگه هم مراجعه به سایت ثبت احواله که تست میکنه کد ملی معتبره یا نه میتونی از اون طریق هم توی برنامه ات استفاده کنی

    من درخدمتم
    موفق و موید باشی

  3. #3

    نقل قول: كسي روش يا برنامه چك كردن كد ملي را دارد؟

    سلام

    فرمول تشخیص صحت کد ملی

    http://forum.p30world.com/showthread.php?t=295203

  4. #4
    کاربر دائمی آواتار ali_abbasi22145
    تاریخ عضویت
    آذر 1382
    محل زندگی
    يك جايي در پايتخت
    پست
    1,350

    نقل قول: كسي روش يا برنامه چك كردن كد ملي را دارد؟

    فرمول تشخیص صحت کد ملی (کارت ملی شناسایی)
    ________________________________________
    سلام. این مطلب رو در چند سایت مختلف دیدم، اما هیچ کدام منبع یکسانی رو معرفی نکردند البته گفته شده که سازمان ثبت احوال کشور این فرمول رو ارائه داده. و اما اصل مطلب:

    همانطور که می دانید همه ارگانها و سازمانهای دولتی جمهوری اسلامی و شرکتهای تابعه موظف شده اند از این پس فیلد جدیدی در کنار مشخصات افراد به نام کد ملی درج نمایند و تقریبا همه هموطنان عزیز در حال حاضر کارت ملی را دارند. ولی ما به عنوان یک برنامه نویس وقتی در فرمی کد ملی را دریافت می کنیم چگونه از صحت کد وارد شده مطمئن شویم.

    سازمان ثبت احوال کشور در راستای ارائه کارت ملی روشی را برای تولید کدهای ملی استفاده نموده است که با استفاده از آنها می توانیم کدهایی داشته باشیم که از امنیت بالایی برخوردار باشند و همچنین قابلیت تقلب نداشته باشند.

    همه کدهای ملی ۱۰ رقمی هستند.

    کدهای ملی که همه ارقام آنها مثل هم باشند معتبر نیستند مثل:

    ۰۰۰۰۰۰۰۰۰۰
    ۱۱۱۱۱۱۱۱۱۱
    ۲۲۲۲۲۲۲۲۲۲
    ۳۳۳۳۳۳۳۳۳۳
    ۴۴۴۴۴۴۴۴۴۴
    ۵۵۵۵۵۵۵۵۵۵
    ۶۶۶۶۶۶۶۶۶۶
    ۷۷۷۷۷۷۷۷۷۷
    ۸۸۸۸۸۸۸۸۸۸
    ۹۹۹۹۹۹۹۹۹۹

    روش اعتبار سنجی کد ملی :

    دهمین رقم شماره ملی را ( از سمت چپ ) به عنوان A در نظر می گیریم.

    یک مقدار B در نظر می گیریم و آن را برابر با =

    (اولین رقم * ۱۰) + ( دومین رقم * ۹ ) + ( سومین رقم * ۸ ) + ( چهارمین رقم * ۷ ) + ( پنجمین رقم * ۶) + ( ششمین رقم * ۵ ) + ( هفتمین رقم * ۴ ) + ( هشتمین رقم * ۳ ) + ( نهمین رقم * ۲ )

    قرار می دهیم.


    مقدار C را برابر با = B – (B/11)*11 قرار می دهیم.


    اگر مقدار C برابر با صفر باشد و مقدار A برابر C باشد کد ملی صحیح است.

    اگر مقدار C برابر با ۱ باشد و مقدار A برابر با ۱ باشد کد ملی صحیح است.

    اگر مقدار C بزرگتر از ۱ باشد و مقدار A برابر با ۱۱ – C باشد کد ملی صحیح است.


    اینها در لینک بالا گفته شده ولی اکتیوایکس آن را نتوانستم دانلود کنم اگرکسی اکتیوایکس اینجا آپلود کند ممنون می شوم.

  5. #5

    Cool نقل قول: كسي روش يا برنامه چك كردن كد ملي را دارد؟

    سلام دوست من

    من dll اون رو دارم برات میذارم شاید بدردت بخوره!
    موفق و موید باشی
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله اصغر (پآچ) : دوشنبه 12 اسفند 1387 در 13:12 عصر دلیل: فایل رو اضافه نکرده بود!

  6. #6
    کاربر دائمی آواتار Batman
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    ناكجاآباد
    پست
    887

    Wink نقل قول: كسي روش يا برنامه چك كردن كد ملي را دارد؟

    نقل قول نوشته شده توسط اصغر (پآچ) مشاهده تاپیک
    سلام دوست من

    من dll اون رو دارم برات میذارم شاید بدردت بخوره!
    موفق و موید باشی
    آقا چجوري ازش استفاده كنيم؟

  7. #7
    کاربر دائمی آواتار MSHService
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اکنون توی EJB
    پست
    207

    نقل قول: كسي روش يا برنامه چك كردن كد ملي را دارد؟

    سلام.
    یه اکتیوایکس از طرف خود اداره ثبت ارایه شده که با راهنما و نمونه مثالش براتون الصاقش کردم.
    امیدوارم به کارتون بیاد .
    در مورد اون DLL دوستمون آقای فرهاد اونDLL رو نوشته که طریقه استفاده به شکل زیر میباشد.
    function chek_Code(code: string): Boolean;
    موفق و پیروز باشید.
    فایل های ضمیمه فایل های ضمیمه

  8. #8

    نقل قول: كسي روش يا برنامه چك كردن كد ملي را دارد؟

    آقا چجوري ازش استفاده كنيم؟
    دیگه همچین کدی نیاز به DLL و اکتیو ایکس و اینجور چیزها نداره که! یک فرمول ساده هست، آن را بصورت کد دلفی در قالب یک تابع پیاده سازی کنید، و در یک یونیت ذخیره کنید، و هر جا نیاز داشتید، ازش استفاده کنید.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  9. #9

    نقل قول: كسي روش يا برنامه چك كردن كد ملي را دارد؟

    من از این فرمول در برنامه ام استفاده کردم و برای بعضی از دانشجوهایی که می خواهند کد ملی شون را ثبت کنن کد ملی تایید نمی شود به خصوص کسانی که اول کد ملی به صفر شروع می شود .

  10. #10

    نقل قول: كسي روش يا برنامه چك كردن كد ملي را دارد؟

    همین دیروز یونیت رو قرار دادم ، حداقل یه نگاهی به پست های اخیر مینداختین ...

  11. #11

    نقل قول: كسي روش يا برنامه چك كردن كد ملي را دارد؟

    من این قسمت از فرمول شک دارم لطفا باز نگری در نحوه تایپ فرمول کنید:

    مقدار C را برابر با = B – (B/11)*11 قرار می دهیم.

    چون 11 با 11 زده میشود در نتیجه c=b-b

  12. #12

    نقل قول: كسي روش يا برنامه چك كردن كد ملي را دارد؟

    فکر میکنم شما در بحث ریاضیات و تقدم عملگرها ( پرانتز ) ضعیف هستید ، جواب فرمول اولی که قرمز کردید با دومی که خودتون نوشتید زمین تا آسمون فرق میکنه .
    شاید هم من درست منظورتون رو متوجه نشدم که در این صورت پیشاپیش معذرت میخوام .

    موفق باشید .

  13. #13
    کاربر دائمی آواتار Hamid.Kad
    تاریخ عضویت
    آبان 1385
    محل زندگی
    پُشت هیچستانم...
    پست
    349

    نقل قول: كسي روش يا برنامه چك كردن كد ملي را دارد؟

    فکر میکنم شما در بحث ریاضیات و تقدم عملگرها ( پرانتز ) ضعیف هستید ، جواب فرمول اولی که قرمز کردید با دومی که خودتون نوشتید زمین تا آسمون فرق میکنه .
    اتفاقاً حرف ایشون کاملاً صحیحه. درست میگن. میشه بفرمائید شما چجوری این فرمول رو حساب می کنید که جوابش از زمین تا آسمون فرق میکنه ؟

    دوست عزیز، احتمالاً ایشون از یه برنامه به زبان C کپی کردن و منظورشون از تقسیم، تقسیم صحیح بوده که در این صورت کل این عبارت برابر با باقیمانده
    تقسیم عدد B بر 11 میشه. یعنی: c:=B Mod 11
    موفق باشید
    آخرین ویرایش به وسیله Hamid.Kad : سه شنبه 05 آبان 1388 در 15:05 عصر

  14. #14
    کاربر دائمی
    تاریخ عضویت
    دی 1387
    محل زندگی
    اهواز
    پست
    923

    نقل قول: كسي روش يا برنامه چك كردن كد ملي را دارد؟

    با سلام خدمت دوستان
    من کد اینطور نوشتم.جواب میدهد.متشکرم.

    procedure DoCodMeli;



    var

    Byt10,Byt9,Byt8,Byt7,Byt6,Byt5,Byt4,Byt3,Byt2,byt1 ,bytRemander:Byte;

    intJam:Integer;
    begin
    Byt10:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.T ext ,1,1))*10;
    Byt9:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,2,1))*9;
    Byt8:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,3,1))*8;
    Byt7:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,4,1))*7;
    Byt6:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,5,1))*6;
    Byt5:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,6,1))*5;
    Byt4:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,7,1))*4;
    Byt3:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,8,1))*3;
    Byt2:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,9,1))*2;
    Byt1:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,10,1));
    intJam:=Byt10+byt9+byt8+byt7+byt6+byt5+byt4+byt3+b yt2;
    bytRemander:=intJam mod 11;
    if bytRemander>1 then
    bytRemander:=11- bytRemander;
    if Byt1<>bytRemander then begin
    Application.Title :='˜Ï ãáí ÛáØ'+'!';
    ShowMessage('˜Ï ËÈÊ ÔÏå ãÚÊÈÑ äíÓÊ'+'!');
    frmGharardadEdit.txtCodMeli.SetFocus ;
    Exit;
    end;



    end;




    با تشکر از جناب SilverSoft به خاطر کمکهای ارزنده در این رابطه .(منظور دادن لینک مناسب در تاپیک قبلی همین موضوع)
    آخرین ویرایش به وسیله khoshblagh : شنبه 16 آبان 1388 در 09:36 صبح

  15. #15
    کاربر دائمی آواتار K.Mohammadreza
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    کرمان
    پست
    285

    نقل قول: كسي روش يا برنامه چك كردن كد ملي را دارد؟

    نقل قول نوشته شده توسط khoshblagh مشاهده تاپیک
    با سلام خدمت دوستان
    من کد اینطور نوشتم.جواب میدهد.متشکرم.

    procedure DoCodMeli;



    var

    Byt10,Byt9,Byt8,Byt7,Byt6,Byt5,Byt4,Byt3,Byt2,byt1 ,bytRemander:Byte;

    intJam:Integer;
    begin
    Byt10:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.T ext ,1,1))*10;
    Byt9:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,2,1))*9;
    Byt8:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,3,1))*8;
    Byt7:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,4,1))*7;
    Byt6:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,5,1))*6;
    Byt5:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,6,1))*5;
    Byt4:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,7,1))*4;
    Byt3:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,8,1))*3;
    Byt2:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,9,1))*2;
    Byt1:=StrToInt(Copy(frmGharardadEdit.txtCodMeli.Te xt,10,1));
    intJam:=Byt10+byt9+byt8+byt7+byt6+byt5+byt4+byt3+b yt2;
    bytRemander:=intJam mod 11;
    if bytRemander=1 then
    bytRemander:=1
    else
    bytRemander:=11- bytRemander;
    if Byt1<>bytRemander then begin
    Application.Title :='˜Ï ãáí ÛáØ'+'!';
    ShowMessage('˜Ï ËÈÊ ÔÏå ãÚÊÈÑ äíÓÊ'+'!');
    frmGharardadEdit.txtCodMeli.SetFocus ;
    Exit;
    end;



    end;




    با تشکر از جناب SilverSoft به خاطر کمکهای ارزنده در این رابطه .(منظور دادن لینک مناسب در تاپیک قبلی همین موضوع)
    کد شما بسیار جالبه ولی زیادی کد نوشتین
    کد زیر به نظر من بهتره

    function GetNumber(Str: String): String;
    var
    I: Integer;
    begin
    Result := '';
    for I := 1 to Length(Str) do
    if(Str[I] in ['0'..'9'])then
    Result := Result + Str[I];
    end;

    function CheckCodeMeli(MelliCode: string): Boolean;
    var
    i, Sum,
    Mon, Chk: Integer;
    begin
    Result := False;
    MelliCode := GetNumber(MelliCode);
    while Length(Trim(MelliCode)) < 10 do
    MelliCode := '0' + MelliCode;

    If(MelliCode = '0000000000')or(MelliCode = '1111111111') Or
    (MelliCode = '2222222222')or(MelliCode = '3333333333') Or
    (MelliCode = '4444444444')or(MelliCode = '5555555555') Or
    (MelliCode = '6666666666')or(MelliCode = '7777777777') Or
    (MelliCode = '8888888888')or(MelliCode = '9999999999') Then
    Exit;
    Chk := StrToInt(Copy(MelliCode, 10, 1));
    Sum := 0;
    for i := 1 to 9 do
    Sum := Sum + StrToInt(Copy(MelliCode, i, 1)) * (11 - i);
    Mon := Sum mod 11;
    if((Mon < 2)and(Chk = Mon))or
    ((Mon >= 2)and(Chk = (11 - Mon)))then
    Result := True;
    end;

  16. #16
    کاربر دائمی آواتار ali_abbasi22145
    تاریخ عضویت
    آذر 1382
    محل زندگی
    يك جايي در پايتخت
    پست
    1,350

    نقل قول: كسي روش يا برنامه چك كردن كد ملي را دارد؟

    سلام
    با كمك آقاي K.Mohammadreza برنامه دلفي تست شده كد ملي الحاق گرديده است.
    فایل های ضمیمه فایل های ضمیمه

  17. #17
    کاربر جدید
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    Tabriz
    سن
    47
    پست
    7

    نقل قول: كسي روش يا برنامه چك كردن كد ملي را دارد؟

    function checkMelliCode(Mellicode:String):boolean ;
    var
    meli_code:String;
    C,N,R:Integer;
    Begin
    checkMelliCode:=False;
    meli_code:=Mellicode;

    if Length(meli_code) = 10 Then
    Begin
    If (meli_code = '1111111111' ) OR
    (meli_code = '0000000000') Or
    (meli_code = '2222222222') Or
    (meli_code = '3333333333') Or
    (meli_code = '4444444444') Or
    (meli_code = '5555555555') Or
    (meli_code = '6666666666') Or
    (meli_code = '7777777777') Or
    (meli_code = '8888888888') Or
    (meli_code = '9999999999' ) Then
    Begin
    // ShowMessage('کد ملی صحیح نمی باشد');
    checkMelliCode:=False;
    exit;
    End;
    c := StrToInt(meli_code[10]);

    n := (StrToInt(meli_code[1]) *10 )+
    (StrToInt(meli_code[2]) * 9 )+
    (StrToInt(meli_code[3]) * 8 )+
    (StrToInt(meli_code[4]) * 7 )+
    (StrToInt(meli_code[5]) * 6 )+
    (StrToInt(meli_code[6]) * 5 )+
    (StrToInt(meli_code[7]) * 4 )+
    (StrToInt(meli_code[8]) * 3 )+
    (StrToInt(meli_code[9]) * 2 );

    r := n - (n div 11)*11;
    if (((r = 0) and (r = c)) OR ((r = 1) and (c = 1)) OR ((r > 1) and (c = 11 - r))) Then
    Begin
    checkMelliCode:=True;
    End ;
    // else ShowMessage('کد ملی صحیح نمی باشد');

    end;
    end;

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •