PDA

View Full Version : error در debug کردن برنامه



free
سه شنبه 23 مرداد 1386, 08:35 صبح
سلام به همه دوستان.
من 1 سوال داشتم. وقتی که فایل exe برنامه ام را اجرا می کنم بدون هیچ مشکلی و به درستی کار می کند اما اگر فایل dpr را در دلفی باز کنم و سپس اجرا نمایم در بعضی از قسمت های برنامه error میدهد. در حالی که مثلا در قسمت ثبت اطلاعات هنگام اجرای exe برنامه به درستی ثبت می نماید اما وقتی دیباگ می کنم در دلفی پیغام error داده و ثبت انجام نمی شود. پیغامی مثله اینکه متغییری دارای مقدار null می شود یا دو متغییر غیر هم نوع به هم نسبت داده می شوند. چطور چنین چیزی اتفاق می افتد؟ اگر برنامه مشکل دارد چرا در exe آن اشکالی دیده نمی شود؟
ممنون میشم از راهنماییتون.
----------------------------------------------
لطفا عنوان سوال خود را اصلاح کنید

Hamid.Kad
سه شنبه 23 مرداد 1386, 08:42 صبح
ممکنه شما یه Application Event روی فرم گذاشتین و گزینه Stop on Delphi Exceptions روشن باشه.
در این صورت موقع اجرای exe برنامه، خطایی نشون داده نمیشه.(اگه توی onException کدی نوشته باشید!)

SYNDROME
سه شنبه 23 مرداد 1386, 09:30 صبح
سلام به همه دوستان.
من 1 سوال داشتم. وقتی که فایل exe برنامه ام را اجرا می کنم بدون هیچ مشکلی و به درستی کار می کند اما اگر فایل dpr را در دلفی باز کنم و سپس اجرا نمایم در بعضی از قسمت های برنامه error میدهد. در حالی که مثلا در قسمت ثبت اطلاعات هنگام اجرای exe برنامه به درستی ثبت می نماید اما وقتی دیباگ می کنم در دلفی پیغام error داده و ثبت انجام نمی شود. پیغامی مثله اینکه متغییری دارای مقدار null می شود یا دو متغییر غیر هم نوع به هم نسبت داده می شوند. چطور چنین چیزی اتفاق می افتد؟ اگر برنامه مشکل دارد چرا در exe آن اشکالی دیده نمی شود؟

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

_alish_
سه شنبه 23 مرداد 1386, 09:53 صبح
بانک اطلاعاتی چیست؟
ExceptionManagment(Try/Except) در کدهایتون استفاده نکردید؟

free
سه شنبه 23 مرداد 1386, 10:08 صبح
بانک اطلاعاتی sqlserver و از try/finally و lookup استفاده کرده ام. اگه lookup مشکل داره چرا تو exe پیغامی نمیده؟

SYNDROME
سه شنبه 23 مرداد 1386, 10:43 صبح
با سلام

بانک اطلاعاتی sqlserver و از try/finally و lookup استفاده کرده ام. اگه lookup مشکل داره چرا تو exe پیغامی نمیده؟
بخاطر اینکه یک Errorقابل گذشت است.یک Unknow errorاست.
اگر تیکی را که دوستمان گفت بردارید دیگر در سورس همه Errorنمی دهد.


گزینه Stop on Delphi Exceptions

موفق باشید.

free
سه شنبه 23 مرداد 1386, 11:02 صبح
این تیکی که گفتین کجاست؟

Hamid.Kad
سه شنبه 23 مرداد 1386, 11:07 صبح
Tools - > Debugger Options -> Language Exceptions -> Stop on Delphi Exceptions
ولی بجای اینکه خطا رو نادیده بگیرید بهتره اونو برطرف کنید

free
سه شنبه 23 مرداد 1386, 11:38 صبح
ممنون از راهنماییهاتون. درسته بهتره خطا را رفع کرد نه نادیده گرفت اما مشخص نیست چرا خطا می دهد.

Arman_1367
سه شنبه 23 مرداد 1386, 11:52 صبح
بخاطر اینکه یک Errorقابل گذشت است.یک Unknow errorاست

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

Hamid.Kad
سه شنبه 23 مرداد 1386, 11:59 صبح
کجای برنامه خطا میده؟ با Trace می تونید ببینید

سارا انصاری
سه شنبه 23 مرداد 1386, 15:51 عصر
دوست عزیز سلام:
شاید Exe اجرایی شما قبل از کامپایل مجدد برنامه بوده. یعنی آخرین باری که برنامه را کامپایل کردین و هیچ اشکالی نداشته ساخته شده. چون در صورتی که برنامه مشکلی داشته باشد کامپایل کامل نمیشود و Exe هم ساخته و Update نمیشود. به عبارتی این EXe شامل نسخه قدیمی و بدون Error برنامه شماست.

SYNDROME
سه شنبه 23 مرداد 1386, 16:16 عصر
ممنون از راهنماییهاتون. درسته بهتره خطا را رفع کرد نه نادیده گرفت اما مشخص نیست چرا خطا می دهد.
دوست عزیز همانجوری که اول گفتم زمانی که می خواهید Editیا Insertبکنید هر فیلدی را که مقدار دهی می کنید فیلدی که بر روی آن Lookupزده اید مقدار خود را به مقدار فیلد مقابل چک می کند تا اگر مقدار مورد نظررا پیدا کرد بیاورد ولی شما چون بعد از مقدار دهی چند فیلد این فیلد را مقدار دهی می کنید با هر بار مقدار دهی فیلدها یک Errorچاپ می شود که واقعا در روند اجرای برنامه هیچ مشکلی ایجاد نمی کند.
حالا فیلد مورد نظر را بعد از دستور EditیاInsertکه انجام می دهید قرار دهید تا اولین فیلد ، فیلد مورد نظر مقدار دهی شود.

دوست عزیز سلام:
شاید Exe اجرایی شما قبل از کامپایل مجدد برنامه بوده. یعنی آخرین باری که برنامه را کامپایل کردین و هیچ اشکالی نداشته ساخته شده. چون در صورتی که برنامه مشکلی داشته باشد کامپایل کامل نمیشود و Exe هم ساخته و Update نمیشود. به عبارتی این EXe شامل نسخه قدیمی و بدون Error برنامه شماست.
Exe و برنامه مورد نظر دقیقا یکی است.


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

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