PDA

View Full Version : سوال: با access violation چه کار کنم؟



mbshareat
یک شنبه 17 آذر 1398, 08:02 صبح
سلام
خیلی پیش در مورد Access violation در این سایت خوندم.اما نتونستم از روشی که گفته بود استفاده کنم.
سطر خطا رو چطور پیدا کنم.می دونم تکلیف انجام دادنه ولی کسی می تونه بهم بگه کجای برنامه وقت بستن پنجره اصلی برنامه این خطا رو تولید می کنه؟
در ضمن برنامه در نسخه های بعد از دلفی 7 کامپایل نمیشه!

http://s6.picofile.com/file/8381040300/EasyTree.rar.html

mbshareat
سه شنبه 19 آذر 1398, 15:22 عصر
سلام
حد اقل یه نفر بگه اون مقاله رو چطور پیدا کنم.گرچه نفهمیدم چی میگه.کجا باید access violation رو جستجو بدم؟

pe32_64
سه شنبه 19 آذر 1398, 22:42 عصر
چرا نسخه این قدر قدیمی ؟

Access violation یعنی خطا در استفاده از حافظه.
مثلا قبل از تخصیص از حافظه استفاده کردی یا بعد از پس دادن حافظه به سیستم عامل دو باره داری ازش استفاده می کنی.

یوسف زالی
چهارشنبه 20 آذر 1398, 10:26 صبح
سلام. می تونی از ابزار هایی مثل اورکا لاگ، یا مدشی استفاده کنی
Ureka Log
MadShi

این دو تا ابزار کمک می کنن که در صورت بروز خطا، استک رو ببینی و شماره خطی رو که روش خطا اتفاق افتاده به همراه نام یونبت پیدا کنی.

mbshareat
سه شنبه 26 آذر 1398, 21:38 عصر
سلام
بدون کمک ابزار، مشکل رو پیدا کردم و حل کردم.اما این خطا برای من زیاد پیش اومده.عجیبه که بعد از Destroy اتفاق می افتاد!(با F7,F5 بررسی می کردم)
استفاده از متغیر بی علامت و انتساب عدد منفی (که عدد رو تغییر میده) و نیز استفاده از متغیر عددی بدون مقداردهی برای اندیس آرایه گاهی باعث این خطا میشه :گیج:
ولی در مورد کد من ، استفاده از عدد منفی برای اندیس آرایه موجبش شده بود(قبلا در کتاب شماره صفحه منفی وجود نداشت حالا وجود داره!) که دیدم اصلا به اون قسمت کد نیاز ندارم لغوش کردم.
ممکنه بگید
اورکا لاگ، یا مدشی چی هستند؟ در دلفی 7 موجوده؟

راستی آقای زالی کسی به سوالم در مورد ماکروی متنی جواب نداد.امکانش هست عنایتی کنید؟ظاهرا باید template تعریف کنم ولی بلد نیستم.

pe32_64
سه شنبه 26 آذر 1398, 22:10 عصر
سلام
بدون کمک ابزار، مشکل رو پیدا کردم و حل کردم.اما این خطا برای من زیاد پیش اومده.عجیبه که بعد از Destroy اتفاق می افتاد!(با F7,F5 بررسی می کردم)
استفاده از متغیر بی علامت و انتساب عدد منفی (که عدد رو تغییر میده) و نیز استفاده از متغیر عددی بدون مقداردهی برای اندیس آرایه گاهی باعث این خطا میشه :گیج:
ولی در مورد کد من ، استفاده از عدد منفی برای اندیس آرایه موجبش شده بود(قبلا در کتاب شماره صفحه منفی وجود نداشت حالا وجود داره!) که دیدم اصلا به اون قسمت کد نیاز ندارم لغوش کردم.
ممکنه بگید
اورکا لاگ، یا مدشی چی هستند؟ در دلفی 7 موجوده؟

راستی آقای زالی کسی به سوالم در مورد ماکروی متنی جواب نداد.امکانش هست عنایتی کنید؟ظاهرا باید template تعریف کنم ولی بلد نیستم.

سلام
- بعد از Destroy نباید از شی استفاده کرد .چون شی وجود نداره و شما به صورت شانسی دارید در حافظه اطلاعاتی رو مینویسید که نتیجه خوبی نداره و خوش شانس بودید که access violation گرفتید.
- استفاده از متغیر عددی بدون مقداردهی برای اندیس آرایه هم مشابه قبل هستش.چون احتمالا عدد خیلی بزرگ تر از سایز آرایتون هستش و در جایی که نباید ، اطلاعاتی رو می نویسید .
- اعداد علامت دار نصف فضاشون رو برا نمایش اعداد منفی استفاده میکنند.این میتونه باعث شه :
------ انتساب عدد علامت دار به بی علامت میتونه باعث شه یک عدد خیلی بزرگ به متغییر اندیس انتساب پیدا کنه .
------ تخصیص عدد بی علامت به علامت دار میتونه اندیس منفی تولید کنه.
این وب سایت دو ابزار معرفی شده هستش : (راه تهییه رو هم که بلد هستید!)
EurekaLog
https://www.eurekalog.com/
madExcept
http://madshi.net/