delphi4arab منتديات دلفي للعرب

نسخة كاملة : المؤشرات و الخطأ : EAccessViolation
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاتة

سؤال متعلق بالمؤشرات Smile عندقراءة عنوان اكتب هذا السطر :
PHP كود :
Form1.Caption := IntToHex(PDWORD($00401000)^,8); 
يتم قراءة محتوى العنوان $00401000 ... بدون مشاكل ...
وعندما احاول ان اكتب على العنوان بنفس الطريقة لا استطيع يظهر لي خطأ : EAccessViolation
هذا الكود الذي استعملته :
PHP كود :
PDWORD($00401000)^ := 5 
ما المشكلة التي وقعت بها ؟
بالطبع لن تستطيع التعديل عليها .. لأن الجزء من الذاكرة التي يقع فيها هذا العنوان محمي (ذاكرة محمية)
يجب تغيير صلاحيات الذاكرة :
اطلع على :
كود :
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366786(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/desktop/aa366785(v=vs.85).aspx
+ الدوال :
كود :
VirtualAlloc VirtualAllocEx WriteProcessMemory
ههههه ... كنت اتوقع ذلك , لكن ما جعلني اسئل لاني عندما استعمل اوامر الاسبملي
PHP كود :
MOV DWORD PTR DS:[$00401000],0x5 

لا تظهر هذه الرسالة ... لذلك ضننت ان الاوامر التي تنفذ من الكود لها صلاحيات التعديل ...

طيب ... اخي المبرمجي SMP3 لما لا تظهر هذه الحالة مع اوامر الاسمبلي ؟

------
الرد الثاني
على ما يبدو ان نفس الرسالة تظهر مع اوامر الاسمبلي ... @@
لكن الغريب انها لم تظهر هذه الرسالة عندما استعملت اكواد الاسبملي على احد الآلعاب
ربما كانت الصلاحيات معدلة من الأسااس

شكراً لك اخي المبرمج SMP3
الصلاحيات للذاكرة تختلف من برنامج لاخر (يمكن القول ان الكومبايلر هو الذي يحدد صلاحيات الولوج للذاكرة)