الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

متغيرات على مستوى الكلاس تفقد قيمها

بدأه علاء ابوزهرة في 31 أغسطس 2008 · 5 رد · 620 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

اخواني الاعزاء

قمت بتصميم برنامج باستخدام mfc وجعلت فيه متغير public، وهذا المتغير اسخدمه في مرات كثيرة، وقد لاحظت انه يفقد قيمته ويصبح trash او NULL، فان كان عندكم فكرة او اقتراح لحل هذه المشكلة فالرجاء افادتي بها

ملاحظة: قمت بتتبع البرنامج عن طريق ال debug ولكني لم استطع التوصل للحل

وشكراً جزيلاً

#2

لابد من رؤية الكود !

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#3

اخي الكريم

اولا اشكرك على سرعة الرد، والذي هو ميزة لهذا المنتدى الكبير

بالنسبة للكود فإني اعتقد ان الكود كبير جداً وسأشرح لك هذه المشكلة بالتفصيل، وإن أحببت أن ترى الكود فسأرفع لك المشروع بالكامل.

بالنسبة للمشكلة: واجهت هذه المشكلة عندما كنت ابرمج برنامجاً لإدارة مقهى انترنت، حيث ان برنامج ال client يقرأ ال IP الخاص بالسيرفر ويتصل به، وفي حال فقدان الاتصال لأي سبب يتم اعادة الاتصال reconnect، المشكلة ظهرت حين كنت أقرأ ال IP من ملف نصي وأخزنه في متغير، وبعد فترة من العمل وجدت أن المتغير يفقد القيمة (بدل النص صار NULL) حاولت تغيير اسم المتغير من ip إلى the_ip ظناً مني ان المشكلة بالاسم، ولكن نفس المشكلة ظهرت، فاضطررت لحل هذه المشكلة بقراءة ال IP مرة أخرى من الملف في كل مرة إريد اعادة الاتصال بالسيرفر.

هل من تصور لحل هذه المشكلة؟

وبارك الله فيكم

#5

كما قال لك الأخوة لا بد من من رؤية الكود

لكن تفحّص أنت الكود، فربما كنت تقرأ قيمة الـ IP خلال انقطاع الاتصال وتضعها في المتغير the_IP وهذا ما يضيع القيمة!

اذا اردت متغيرا يحتفظ بقيمته بين جميع الفئات وعلى طول البرنامج استخدم static member

تم تعديل هذه المشاركة بواسطة إسماعيل ابراهيم في 1 سبتمبر 2008 في 10:16

#6

جرّب ان تجعل مكان تعريف الـمتغير في اول الكود .. لا تعرّف متغير قبله .. ربما هناك overflow يسبب الكتابة على المتغير .

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…