PDA

View Full Version : سوال: خطایاب برنامه در Runtime (نمایش نام روال و شماره خط خطا)



محسن واژدی
سه شنبه 28 دی 1389, 09:26 صبح
با سلام
اینگونه که من مشاهده کردم در برنامه CodeSMART هرگاه خطایی بوجود بیاد یک فرم گزارشی ظاهر میشه که شماره خطی که این خطا در اون رخ داده را هم میگه مثلا مینویسه "Error In line code: 207" و حتی نام روالی که این خطا در اون رخ داده را هم مینویسه که این خطا مربوط به چه روالی هست مثلا بدین صورت "General.StripData" :متعجب:

حالا من میخواهستم از دوستان بپرسم که:
آیا دستوری هست که در زمان رخداد یک خطا در کدهای برنامه قادر باشد نام روال و شماره لاینی که این خطا در آن رخ داده است را نشون بدهد؟
البته منظورم دستور "On Error ..." نیست چون هرکاری کردم شماره خط و روالی که خطا در آن رخ میدهد رو واسم در زمان اجرا نشون نمیده (نمیدونم شاید من نتونستم :ناراحت:)
لازم به ذکره که برنامه CodeSmart هم با vb6 نوشته شده.

البته داخل انجمن هم جستجو کردم و چندتا پست هم پیدا کردم اما اینگونه که مورد نظرم بود پیدا نشد

با تشکر از توجه دوستان:لبخندساده:

vbhamed
سه شنبه 28 دی 1389, 10:52 صبح
سلام

دستور رو دقيقا نمي دونم
ولي به دنبال AddIn نويسي براي وي بي جستجو كنيد جواب رو پيدا مي كنيد

محسن واژدی
سه شنبه 28 دی 1389, 15:23 عصر
سلام

دستور رو دقيقا نمي دونم
ولي به دنبال AddIn نويسي براي وي بي جستجو كنيد جواب رو پيدا مي كنيد

بنده میخوام این خاصیت را در زمانی که برنامه ام را توزیع کرده ام هم فعال باشه، یعنی بتونه شماره روالی که خطا در اون رخ داده را به همراه شماره خطی که این خطا در آن رخ داده را برام گزارش کنه

با تشکر

M.T.P
چهارشنبه 29 دی 1389, 11:27 صبح
من تو برنامه هام از یک روال استفاده میکنم.
نمونه زیر رو ببینید.

vbhamed
چهارشنبه 29 دی 1389, 11:30 صبح
سلام

در برنامه اجرايي كه فكر نمي كنم كار كنه
اما براي اين كار بايد اول همه روالهاتون يك دستور بنويسيد كه نام روال و مشخصات دلخواه ديگه رو در يك فايل Log يادداشت كنه، اين روش اصولي اين كار هست
البته نگران انجام اين كار نباشين، Codesmart مي تونه اول همه روالهاتون كد دلخواه رو اضافه كنه
بهترين راه اينه كه يك تابع بنويسيد كه پارامترهايي شامل نام روال، شماره خطا و ... رو بگيره و در يك فايل يادداشت كنه، سپس با Codesmart دستور فراخواني اين تابع رو در تمام روالها قرار بدين
خوبي نوشتن تابع و فراخواني اون اينه كه هر موقع نياز به تغيير داشت فقط يك جا تغييرش مي دين نه در تمام روالها و ضمنا ميشه به راحتي غير فعالش هم كرد
البته يادتون نره در تابع نوشته شده فقط وقتي در فايل Log چيزي بنويسيد كه خطايي رخ داده باشه

vbhamed
پنج شنبه 30 دی 1389, 06:59 صبح
سلام

با توجه به روالتون، ابتدا منوي CodeSMART گزينه Custom Code آيتم Insert Custom Code رو انتخاب كنيديا كليد Ctrl+F12 رو بزنيد
سپس از ليست سمت چپMember Header رو انتخاب و در تكست باكس سمت راست هر چي نوشته شده پاك كنيد و عبارت زير رو تايپ كنيد


WriteError Err, Err.Description, "{ComponentName}.{MemberName}"اين عبارت يك الگو هست و به CodeSMART دستور بالا رو اول هر روال درج كن، ضمنا {ComponentName}.{MemberName} يعني نام فرم يا ماژول.نام تابع يا متد

مثلا اول متد Command1_Click در Form1 چنين چيزي اضافه ميشه


'<CSCustomCode> 1
WriteError Err, Err.Description, "Form1.Command1_Click"
'</CSCustomCode> 1

خط اول و آخر مربوط به خود CodeSMART هست، اونا رو دست نزنيد چون با كمك اونها بعدا مي تونه كد اضافه شده رو ويرايش يا حذف كنه
خط وسط رو هم خودمون به صورت الگو براش تعريف كرديم و مي بينيد كه شما خطا، خود خطا و نام فرم يا ماژول به همراه نام تابع، به روال كنترل خطاي شما فرستاده ميشه

محسن واژدی
پنج شنبه 30 دی 1389, 14:24 عصر
با تشکر از همه عزیزانی که وقتشان را در اختیار این تاپیک گذاشتند :قلب:

آقا حامد از توضیحاتی که درباره نحوی ایجاد هندل خطا توسط CodeSMART نوشتید خیلی تشکر میکنم :قلب:

تقریبا چندسالی هست که CodeSMART دستیار بسیاری از کارهای من در وی بی شده، البته خودم نیز با نحوه ی ویرایش و مدیریت هندل های خطا در CodeSMART آشنایی دارم

راستش میدونین چی بود من فکر میکردم، حتما دستوری وجود داره که خودش نام ماژول و روالی که کدها در اون قرار دارن رو واسمون نشون میده بدون اینکه ما مجبور باشیم نام اونارو دستی وارد کنیم اما چند روز پیش که با وی بی ور میرفتم اتفاقی فهمیدم که چگونه میشه در زمانی که برنامه مون رو کمپایل و توزیع کرده ایم دقیقا شماره خط کدی که خطا در اون رخ داده رو بفهمیم بدون اینکه مجبور باشیم سورس برنامه رو گشوده و خطا رو ردگیری کنیم (مخصوصا زمانی که یک پروژه بزرگی داشته باشیم) البته اینایی که فهمیده ام بعد از وقتی بود که این تاپیک رو زدم

دستور Erl شماره لاینی که خطا در آن رخ داده رو نشون میده، البته قبل از اون باید شماره ای (که بعدا به عنوان شماره خط خطا نشون داده میشه) رو به عنوان لیبل خط کدمون قرار بدیم
البته همانطور که آقا حامد عزیز هم توضیح دادن CodeSMART این عمل رو واسمون آسون کرده، که واسه اینکار میتونیم با فشار دادن دکمه های Ctrl+F11 و کلیک بر روی Being هم هندل های خطا و هم شماره های خطوط به اول کدها افزوده میشه، که بعد از اینکه برناممون رو حتی اگه کامپایل هم کردیم در صورت ایجاد شدن خطا شماره افزوده شده به لاین کد در Erl ثبت میشه

شاید توضیحات بالا رو کمی کیج کننده کردم اما دوستان میتونن نمونه زیر رو برای درک بیشتر ببینند

با تشکر از همگی :لبخندساده::لبخندساده::لبخن ساده:

یاعلی...