PDA

View Full Version : اشکال Access Violation چه موقعی بروز می کنه؟



mbshareat
پنج شنبه 27 آبان 1389, 00:47 صبح
با سلام
گاهی تو برنامه به پیغامهای خطایی بر می خورم که به طور واضح محل اشکال رو اعلام نمی کنن!:عصبانی++:
مثلا Access Violation ظاهرا وقتی بروز می کنه که شیئی تعریف کنیم و قبل از Create بخوایم دستکاریش کنیم.:خجالت:
سوال من اینه که اولا همین Access Violation کی رخ می ده و ثانیا برای فهمیدن مکان دقیق بروز چنین خطاهایی که خط جاری نامشخصه چه کار می شه کرد؟:ناراحت:
--------
چو بشنوی سخن اهل دل، مگو خطاست *** سخن شناس نه ای جان من، خطا این جاست- حافظ

Mahmood_M
پنج شنبه 27 آبان 1389, 01:06 صبح
Access یعنی " دسترسی " ، Violation یعنی " تجاوز " یا " تخطی " یا ... ، Access Violation یعنی تجاوز در دسترسی یا دسترسی غیر مجاز یا ... !
AV ها همون طور که از نامشون پیداست ، معمولا مواقعی نمایش داده میشن که بخواید به محلی مثلا از حافظه دسترسی داشته باشید که موجود نیست ! ، مثلا بخواید شیء ای که ساخته نشده رو حذف کنید ، یا بخواید از شیء ای که ساخته نشده استفاده کنید ...
به طور کلی اگر بخواید به جایی دسترسی داشته باشید که چیزی درش نیست یا دسترسی بهش ممکن نیست این خطا ظاهر میشه ...

مثلا Access Violation ظاهرا وقتی بروز می کنه که شیئی تعریف کنیم و قبل از Create بخوایم دستکاریش کنیم.
وقتی شیء ای رو تعریف میکنید و بدون اینکه اون رو ایجاد کنید و در واقع فضایی رو در حافظه بهش اختصاص بدید می خواید به خصوصیاتش دسترسی داشته باشید ، در حالی که چنین شیء ای در حافظه وجود نداره ! پس میشه یک دسترسی به جایی نا معلوم و یک دسترسی غیر مجاز !

یک مقاله ی مفید اینجا (http://delphi.about.com/od/objectpascalide/l/aa052201a.htm) هست که خوندنش خالی از لطف نیست ...

تفکیک اطلاعات AV ها کار ساده ای نیست ، ولی چندی پیش یکی از دوستان در همین بخش دلفی مطلبی در این مورد نوشته بودن که می تونه کمکتون کنه ، لینک مطلب (http://barnamenevis.org/forum/showpost.php?p=399383&postcount=7) ...

موفق باشید ...