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

هل هذا الكود صحيح

بدأه المستفيد1 في 19 سبتمبر 2008 · 2 رد · 671 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أعلم أن الكلام عن الريجستري كثير، لكن مشكلتي لم أجد أنها مكررة في المنتدى فقد بحثت عن مثلها كثيرا

والمشكلة هي أني حاولت أن أقوم بعمل برنامج تجريبي يعمل مع قاعدة بيانات، وقد قمت بتعريف قاعدة البيانات داخل البرنامج بالكود التالي

ADOConnection1.Connected := false;
ADOConnection1.Close;
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +Getcurrentdir + '\Test.mdb;';
ADOConnection1.Open;

وكل شيء اشتغل على ما يرام حتى بعد نقله إلى مجلد آخر.

لكن المشكلة أني قمت بتحزيم الملف عن طريق البرنامج Inno Setup ، وهو فعلا رائع، لكن يبدو أن المشكلة حدثت مع الريجستري

فقمت بوضع هذا الكود في ctivate الخاصة بالفورم الرئيسي وهو كالتالي:

procedure TMainForm.FormActivate(Sender: TObject);
var
Reg: TRegistry;
begin
 Reg:= TRegistry.Create();
 try
 Reg.RootKey := HKEY_LOCAL_MACHINE;
 Reg.OpenKey('Software\اختبار', FALSE);
 Reg.ReadString(ExtractFilePath(ParamStr(0))+'Test.mdb');
 finally
 Reg.Free();
end;
end;

حيث أن (اختبار) هو اسم البرنامج، و (Test.mdb) هي اسم قاعدة البيانات وهي في نفس المجلد الذي فيه (exe) للبرنامج

ولكن بمجرد تشغيل الجهاز وفتحه يظهر لي رسالة أنه لم يتم التعرف على مكان قاعدة البيانات

فأرجوا أن توضحوا لي ما سبب المشكلة، هل الكود خطأ أم شيء آخر

#2

المشكلة من مكان تنفيذ البرنامج

والحل بسيط ان شاء الله

اترك الكود الاول كما هو

احذف الكود الثاني (اصلا خطأ) لا حاجة له في FormActivate

وفي الفورم الاساسية في الحدث OnCreate اظف فقط

ChDir(ExtractFilePath(ParamStr(0)));

والسلام عليكم

تم تعديل هذه المشاركة بواسطة B.M.AbdelAziZ في 19 سبتمبر 2008 في 13:36

d4baa0.gif
#3
B.M.AbdelAziZ كتب:

المشكلة من مكان تنفيذ البرنامج

والحل بسيط ان شاء الله

اترك الكود الاول كما هو

احذف الكود الثاني (اصلا خطأ) لا حاجة له في FormActivate

وفي الفورم الاساسية في الحدث OnCreate اظف فقط

ChDir(ExtractFilePath(ParamStr(0)));

والسلام عليكم

جزاك الله خيرا أخي الفاضل B.M.AbdelAziZ

فعلا، هكذا أصبح يعمل بدون مشاكل، حتى بعد تحزيم الملفات

تحياتي لك، وتقبل الله منا ومنك صالح الأعمال

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