اقوم بعمل برنامج من عدة نماذج forms وفي لحظة معينة اثناء تجريبي للبرنامج وقد كان يعمل بشكل جيد وعندما اخرج من فورم الى فورم اخر ثم الرجوع الى الفورم الاول تظهر الرسالة invaid pointer operation ثم تظهر رسالة اخرى transaction not active وعندما اعود للفورم الاخر تظهر ايضا وتستمر حتى اغلق البرنامج عن طريق task manager بالوندوز ولم اعلم ماذا حدث حيث انني لم اقم باي تغيرات وبعد فتح البرنامج من جديد وقبل التشغيل وجدت ان transactio is active وبعد التشغيل مرة اخرى يحدث نفس الشى ارجو الافادة
Invalid Pointer
عندك خطأ في تعاملك مع انشاء Forms ومتغيراتها
اشرح اكثر او ارفق مثال ليمكن صيد مكان الخطأ
والسلام عليكم ورحمة الله
الف شكر لك استاذي الفاضل على ردك واسف لعدم استطاعتي الرد بسرعة وفعلا كما بينت ان الخطا متعلق بالفورم فانا جعلت كل الفورمس ما عدا الفورم الرئيسي available forms تنشا عند الطلب وليس من بداية عمل البرنامج وذلك بانشائها بالكود التالي عند النقر علي زر
form2:=tform2.create(self);
try
Form2.ShowModal;
finally
Form2.Free;
end;
وكان البرنامج يعمل لمدة بدون مشاكل علما باني عملته على دلفي 2006 ثم عندما نقلته الى دلفي 2007 حدثت المشكلة وقد جعلت الفورمس الان auto creat forms فاختفت المشكلة
اما بالنسبة للرسالة transaction not active فقد وجدت ان احد الفورمس به مكون ترانزاكشن مربوط بقاعدة البيانا الوحيدة التى يعمل عليها البرنامج والموضوعة على الفورم الرئيسي
وقد كنت غيرت مكان قاعدة البيانات واسمها وغيرت الترانزاكشن التى على الفورم الرئيسي ولم انتبه ان هناك مكون ترانزاكشن اخر على فورم اخر
واخيرا كان لردك الفضل في تركيزي على عملية انشاء الفورمس حيث اتضح انها فعلا سبب المشكلة ولكن مالمشكلة حيث كان البرنامج يعمل سابقا وهل هناك طريقة اخرى في دلفي 2007 لعمل فورمس تنشا وقت الحاجة اليها
الطريقة نفسها في كل اصدارات دلفي
وعلى ما اعتقد الخطأ في مكان وضع المتغير Form2
من الاحسن ان ل ايكون متغير محلي معرف فقط في الز او المكان الذي كتبت به الكود
هذا والله اعلم
ملاحظة:نحن اخوة فلا تقل لي استاذ
