PDA

View Full Version : پیدا کردن خطا ؟



Ali-Far
پنج شنبه 18 اسفند 1384, 00:15 صبح
سلام.
تو دلفی وقتی خطای ایجاد میشه پنجره ی CPU نمایش داده میشه.
حالا چه طور میتونیم بریم سراغ همون خطی که ERROR داره. چون خیلی از خطا ها را فقط
پیغام اون را نشون میده ولی کد مربوطه را نشون نمی دهد.

MH2538
پنج شنبه 18 اسفند 1384, 10:04 صبح
سلام
1 - احتمالا شما وقتی error میده می ری اون بالا اون دکمه مثل Pause رو می زنی.
اگر این طور نیست :
یه راه ساده از استفاده از دستورات try است .توی help خود دلفی چند تا مثال ساده در این مورد داره.

Ehsansh
شنبه 20 اسفند 1384, 09:25 صبح
تا حالا ندیدم کسی از اون استفاده کنه.
شما میتونی از مدیریت خطای خود دلفی استفاده کنی.


try
.
.
.
except
on EDivByZero

در این مثال خطای تقسیم بر صفر کنترل شده.
امیدوارم کمک کنه.
موفق باشی

Ali-Far
شنبه 20 اسفند 1384, 11:58 صبح
سلام.
خیلی ممنون از شما.
من از اون کدهای که آقا احسان هم گفته استفاده کرده ام. ولی من چون حجم کد نویسیم رفته بالا دیگه نمی تونم از اون ها استفاده کنم .
بیشتر خطا ها هم رو VCL60.bpl است .
یک سوال دیگه از آقا احسان دارم ؟ چه طور می تونم که DBCHART را بصورت Online
Refresh کنم ؟
با سپاس.

Naficy
شنبه 20 اسفند 1384, 15:07 عصر
به نظر من می یاد که شما جوابتون رو نگرفتین!

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

حالا چه طور میتونیم بریم سراغ همون خطی که ERROR داره. چون خیلی از خطا ها را فقط
پیغام اون را نشون میده ولی کد مربوطه را نشون نمی دهد.
پنجره CPU رو ببندید و یکبار کلید F7 را بزنید. این کار باعث می شه اجرا تا اولین خط کدی که سورس آن موجود است ادامه پیدا کند. بنابراین بعد از این کار شما روی یک خط بعد از خطی هستید که خطا را موجب شده است. (البته ممکنه چنین خطی وجود نداشته باشه، یعنی یه جایی پرت بشین که ربطی به خطا نداشته باشه)

***************************
از شواهد به نظر می یاد که گزینه زیر در دلفی شما غیر فعال شده. بنابراین اونو فعال کنین:
ذیل منوی Tools، گزینه Debugger Options، تب Exceptions، گزینه Stop On Delphi Exception را تیک بزنید.
این کار باعث می شه با بروز هر خطا، دلفی اجرا را متوقف کند و روی خط مربوطه برود.

Ali-Far
شنبه 20 اسفند 1384, 15:17 عصر
سلام.
دوست عزیز خیلی ممنون به خاطر راهنمای شما .
ولی این گزینه را چک کردم و درست بود.

Ali-Far
یک شنبه 21 اسفند 1384, 09:50 صبح
سلام.
اگه خطای تو ویژوال بیسیک رخ بدهد خود کامپایلر دقیقا رو همون خط برنامه را متوقف می کنه ولی تو دلفی یک پیغام با آدرس HEX میده بعد دوباره برنامه را ادامه میده.
که حال این کار نسبت به VB یک سری خصوصیت و یک سری هم معایب داره.
از دوستان میخوام اگه مایل اند بیشتر در این رابطه بحث بشه.
//
چو گفتی که وام هنر توختم
همه هر چه بایستم آموختم
یکی نغز بازی کند روزگار
که بنشاندت پیش آموزگار

Naficy
یک شنبه 21 اسفند 1384, 20:40 عصر
دلفی چنین "مسایلی" نداره.

ولی تو دلفی یک پیغام با آدرس HEX میده بعد دوباره برنامه را ادامه میده.
برای من جالبه که این حرف رو می زنید. اگه گزینه ای که ذکر کردم تیک خورده باشه، قاعدتا بعد از دادن پیغام، باید روی خط خطا رفته و اجرای برنامه تا زمانی که مجددا F9 را بزنید متوقف باشه.

جالبتر اینکه، شما از باز شدن پنجره CPU هم صحبت کردید، پس نمی تونید بگید که "یه پیغام نشون می ده بعد دوباره برنامه را ادامه میده"

ضمنا، صحبتی که در مورد کلید F7 و ... کردم را امتحان کردید؟