تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 8 از 9 اولاول ... 456789 آخرآخر
نمايش نتايج 71 به 80 از 87

نام تاپيک: آموزش گام به گام Vb.net

  1. #71
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

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

    دستور Try و On Error برای گیر انداختن و رفع رجوع خطا است ولی چگونه میتوان یک خطا را پیش آورد؟
    چرا باید برنامه نویس دستی خودش یک خطا به وجود آورد؟ مگر سری را که درد نمی کند ...؟!
    جوابش میشود به همان علتی که کلاسس های خود دات نت خطا را به وجود می آورند! (خودم میدونم نمی خواد تشکر کنید خیلی جوابش کامل و جامع بود! )

    مثالی میزنم:
    شما یک برنامه ساده محاسبه فاکتوریل نوشته اید و مثلاً آن را Dll کرده اید و به دوست شفیقتان برای استفاده تحویل داده اید! این دوست شفیق شما نامردی میکند و عدد منفی به ورودی تابع شما میدهد! (یاد آورم میشوم طبق قوانین شفیقانه زبان شیرین ریاضی فاکتوریل منفی تعریف نشده است) در نتیجه شما هم نامردی میکنید و در درون تابعات اگر عدد ورودی منفی بود یک خطای خوشکل و کاملاً به جا تحویلش میدهید.!
    از شوخی گذشته معمولاً وقتی کدی مینویسید و کد شما در شرایط استاندارد مود نیازش استفاده نمیشود پسندیده است که شما خطایی مرتبط را به وجود آورید.
    مثل همین فاکتوریل عدد منفی یا تابعی برای تبدیل تاریخ نوشته اید ولی استفاده کننده از کد شما عدد ماه را 13 میدهد! و....
    از فلسفه وجودی که بگذریم شما میتوانید با کمک کلمه کلیدی Throw یک خطا را به وجود آوردید (برعکس Try که خطای به وجود امده را خفه میکرد!)

    سینتکسش هم ساده است
    Throw X
    که X یک نمونه، وهله، (New شده) از کلاسس خطا است،
    طبیعتاً هر کلاسسی موقع New شاید یک سری پارامتر از شما بگیرد که با کلاسس دیگر فرق دارد،
    مثلاً کلاسس های خطا عموماً Message را میگیرند که با آن شما میتوانید پیغام توضیحی در مورد دلیل خطا را کاملاً به کنترلر در بیاوردید.
    حتی میتوانید برای خطاهایی که در برنامه تان به وجود می آید و هیچ نمونه آماده ای در دات نت ندارند خودتان با وراثت از کلاسس System.Exception خطای سفارشی بسازید
    مثلاً اگر من میخواستم تابع فاکتوریل را بنویسم این کد را مینوشتم:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    در این مورد من از کلاسس خطای داخلی System.ArgumentOutOfRangeException استفاده کردم که مخصوص خطای خارج از محدوده بودن یکی از آرگومانهای ورودی است و آن عبارت String که به سازنده اش دادم یعنی "value" مخصوص این کلاسس خطا است و شامل نام پارامتر ورودی مشکل دار است، کلاسس فوق از این نام String ای برای ساخت پیغام خطا استاندارد استفاده میکند و متن پیغام میشود:
    Specified argument was out of the range of valid values.
    Parameter name: value
    اگر در زمان New کردن کلاسس فوق من به جای "value" نام "AAA" را میدادم متن پیغام خطا میشد:
    Specified argument was out of the range of valid values.
    Parameter name: AAA
    (این صرفاً برای نمونه بود و فقط مخصوص کلاسس مذکور است)

    میتوان خطاهای تودرتوی پله ای نیز داشت، طوری که خطا خطای دیگر را سبب شود و همه به صورت ذنجیره وار حفظ شوند و...
    سعی کنید کلاسس های خطای استاندارد و مخصوص پر استفاده را در دات نت بشناسید و در صورت نیاز به پرتاب یک خطا، از کلاسس با مسمایی برای این کار استفاده کنید (کاربر anvar.net در پست 69 خود لیست کلاسس های خطای معروف را آورده اند در نتیجه من دوباره کاری نمیکنم)
    (تمام مطالب فوق برای C#.Net هم صادق است ولی در C#.Net کلمه کلیدی مورد نظر با حروف کوچک باید نوشته شود یعنی به شکل throw و در VB.Net فرقی ندارد ولی استانداردش با T بزرگ است)
    حالا میگم یک حالی میدهد بعد از این همه صغرا و کبرا و قصه حسین کرد شبستری، یک نابغه کشف نشده ای بیاید و بگوید:
    "من دستور Throw را درست مینویسم و New هم کرده و پارامترها را صحیح میدهم ولی نمیدانم چرا هر کاری میکنم باز کاپیوتر خطا می دهد!!!!"

    نتیجه اخلاقی آنکه این بار که با خطایی روبرو شدید به جای نگاه کردن به آن به چشم یک مزاحم، ببینید حرفش چیست و چه مطلبی را گوشزد میکند و علاوه بر اینها از چه نوع و چه کلاسسی است.
    فکر کنم با پست های کاربر anvar.net و این پست مرجع خوبی در مورد خطا در دات نت نوشته شد!

    در آخر اگر دوستان میبینند جسارتی میکنم و شوخی میکنم به صرف آن است که مطالب کسل کننده نشود و دوستان و سروران گرامی راحت تر و با حوصله بیشتری بتوانید جفنگیات مرا بخوانید! (شما به دل نگیرید برادر! حساب شده بید! )
    موفق و شاد و بدون خطا باشید.

  2. #72
    پروفشنال bad_boy_2007's Avatar
    تاريخ عضويت
    Aug 2006
    محل سكونت
    ایران
    پست ها
    803

    پيش فرض

    H2 و Avant عزيز خسته نباشيد
    بسيار عالي بود بخصوص آخراي بحث H2

  3. #73
    کـاربـر بـاسـابـقـه am_merman01's Avatar
    تاريخ عضويت
    May 2006
    محل سكونت
    یه جایی گوشه دهکده جهانی تو یه کانکشن دایال آپ
    پست ها
    893

    پيش فرض

    H2 جان باز هم مثل همیشه گل کاشی.
    این ایجاد کردن یا همون پرتاب کردن خطاها چیز جالبیه باعث میشه بیشتر با خطاها آشنا بشیم.
    ولی این مستر بیلی هم خیلی حالش خوش نیست آخه مگه آدم حالش بده که برای خودش سردرد درست کنه؟

  4. #74
    پروفشنال anvar.net's Avatar
    تاريخ عضويت
    Apr 2007
    محل سكونت
    IRAN
    پست ها
    648

    پيش فرض

    دوستان این بحثها رو ادامه بدیم یا نه؟

    البته اگه طالبش باشید فقط تکنیکها رو مگیم و از سخن پراکنی (فارسی را پاس بداریم!!!) پرهیز میکنیم.

    منتظر جوابم........................................ ...............

  5. #75
    آخر فروم باز
    تاريخ عضويت
    Dec 2004
    پست ها
    1,648

    پيش فرض

    بله لطف می کنید اگر ادامه بدید

  6. #76
    کـاربـر بـاسـابـقـه am_merman01's Avatar
    تاريخ عضويت
    May 2006
    محل سكونت
    یه جایی گوشه دهکده جهانی تو یه کانکشن دایال آپ
    پست ها
    893

    پيش فرض

    من بالاخره از شمال برگشتم نميدونيد دوري از تكنولوژي چقدر سخت بود.
    بگزريم انتظار داشتم بعد از دوماه دوري اينجا خيلي تغيير كرده باشه ولي ظاهراً ساير دوستان و اساتيد محترم هم مثل من رفته بودند مسافرت انشاء ا... هرچه زود تر بر ميگردند و به ادامه بحث مي پردازند كه ما خيلي بهش نياز داريم.
    به هر حال از زحمات گذشته و آتي همه دوستاني كه سعي در به پا داشتن اين تاپيك داشته اند بينهايت تشكر ميكنم

  7. #77
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض دستور Using

    سلام
    با اجازه کاربر anvar.net، در یکی از پستها راجب دستور فوق صحبتی شد که من به بعداً پاسش دادم و این هم توضیح.
    - - - - - - - - - - - - - - - - - - - - - - - - -
    دستور Using بسیار شبیه دستور Dim است.
    با این تفاوت که پایان استفاده شی را تایین میکند.
    یعنی شی نمونه سازی شده شما با Using با تضمین 100% در هر شرایط در End Using نابود خواهد شد و اشاره گر مربوطه آزاد خواهد شد.

    ولی استفاده از Using راه و رسمی دارد!
    1- چون Using باید روی اشاره گر شی قفل کند، در نتیجه باید در همان خط اول شی نمونه سازی شود و پر شود و این امر را نمیتوان به خطوط بعد محول کرد و اصلاً اشاره گر شی در بدنه Using در حالت ReadOnly قرار دارد و نمیتوانید چیزی در آن بریزید.!
    2- شی مورد نظر باید واسط نابودسازی را همراه داشته باشد (System.IDisposable) یعنی برای هر نوعی که واسط مذکور را شامل نشود نمیتوان از Using استفاده کرد.
    فهمیدن آنکه شی مورد نظر واسط مذکور را پیاده سازی کرده یا نه هم بسیار راحت است، کافیست به Object Browse در منوی View مراجعه کنید (دوست قدیمی و قدرتمند شده VB کارها) Object Browse تمام اطلاعات یک کلاسس را به واضحی و دقت تمام در اختیارتان قرار میدهد و البته راه دیگری هم دارد، کافیست دستور Using را برای نوع مربوطه تایپ کنید، اگر نوع مربوطه واسط نابودسازی را پیاده سازی نکرده باشد، ویرایشگر قدرتمند VB.Net این امر را تشخیص میدهد و زیر دستوراتتان خطی میکشد، طوری که انگار دستورتان غلط املایی دارد!

    طبق دو قانون فوق کدهای زیر ایراد دارند!

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و کد صحیح اینها هستند

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    باید توجه داشته باشید که هیچ چیز نمیتواند مانع اجرای End Using شود چه خطا و چه خروج نابهنگام
    مثلاً در کد زیر هم باز End Using اجرا میشود!

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    در نتیجه اگر کسی کد زیر را بنویسید، گرچه از نظر دستوری صحیح است و قاعدتاً ایرادی ندارد ولی بسیار خنده دار و مسخره خواهد بود!

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    استفاده از Using به جای Dim عادت بسیار پسندیده ای است و به شدت مورد سفارش مایکروسافت است
    میتوان دو کد زیر را معادل دانست، گرچه کاملاً معادل نیستند ولی بسیار شبیه هم عمل خواهند کرد و فقط در یک تک مورد جزئی تفاوت دارند.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    امیدوارم توانسته باشم کار و هدف کلمه کلیدی فوق را خوب توضیح داده باشم و در آخر تمام موارد فوق در C#.Net نیز صادق است ولی یک کم تفاوت نوشتاری Syntax وجود دارد.

  8. 2 کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده اند


  9. #78
    کـاربـر بـاسـابـقـه am_merman01's Avatar
    تاريخ عضويت
    May 2006
    محل سكونت
    یه جایی گوشه دهکده جهانی تو یه کانکشن دایال آپ
    پست ها
    893

    پيش فرض

    با عرض تشكر خدمت اساتيد عزيز .
    ميشه اگه ممكنه بحث رو با صحبت در مورد برنامه نويسي شي گرا ادامه بديد(ببخشيد كه بي ادبي كردم).

  10. #79
    پروفشنال anvar.net's Avatar
    تاريخ عضويت
    Apr 2007
    محل سكونت
    IRAN
    پست ها
    648

    پيش فرض

    ممنون از آقای H2 واسه بحثهای توپش

    ميشه اگه ممكنه بحث رو با صحبت در مورد برنامه نويسي شي گرا ادامه بديد
    با اینکه من میخواستم واسه DirctX یا Xna مطالبی آماده کنم ولی باشه واسه برنامه نویسی شی گرا یک چیزهایی میذارم. البته صبر داشته باش

    ببخشيد كه بي ادبي كردم
    زیاد سخت نگیر بچه ها خودی هستند

  11. #80
    کـاربـر بـاسـابـقـه am_merman01's Avatar
    تاريخ عضويت
    May 2006
    محل سكونت
    یه جایی گوشه دهکده جهانی تو یه کانکشن دایال آپ
    پست ها
    893

    پيش فرض

    من هم خيلي دوست دارم درباره DirctX يه چيزهايي ياد بگيرم ولي هنوز با مفاهيم پايه مشكل دارم.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

برچسب های این موضوع

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •