استفسار حول مكتبات dll ناقصة بمشروعي
#1
السلام عليكم ورحمة الله

عندي مشروع برنامج من 2008 تقريبا كان يعمل بشكل عادي جدا وفجاة عند تشغيلة تيجي رسائل خطا عن عدم وجود ملفات DDL فالسستم
واسمائها
MOZGLUE.DLL
NSPR4.DLL
PLC4.DLL
MOZQLITE3.DLL
NSSUTIL3.DLL
هذا يعني ان البرنامج يقوم باستعدعاء هذه الملفات من السستم ولم يعد يجدها!! وهذا بالفعل ما حصل أن مايكروسوفت مسحت هذه الملفات او غيرت مسمياتها
لاني بحثت عنها و لم اجدها وعند وضع هذه الملفات يدويا واشغل البرنامج لا تظهر رسائل الخطا
اذا نستنتج ان هناك احتمالين
هذة الملفات السابق ذكرها اذا كان مايكروسوفت مسحتها فالفايرفوكس (المشكلة تظهر عند وجود فايرفوكس منصب فالجهاز) ما زال يستخدمها وهي موجودة فمجلد تنصيبة وعند تشغيل البرنامج تظهر رسائل الخطأ
هذه الملفات السابق ذكرها اذا كان مايكروسوفت غيرت اسمائها فالفايرفوكس ما زال يستخدمها بالاسماء القديمة ولم يغيرها مثل مايكروسوفت
وبناءا علية عدلت على السورس كود ومسحت اسماء الملفات السابق ذكرها من اوامر الاستدعاء
فلم يعد يستدعيها البرنامج عند تشغيلة ولا تظهر رسائل الخطا لكن طبعا البرنامج لا يؤدي عملة بشكل كامل بسبب عدم استدعاء هذه الملفات
هل من حل لهذه المشكلة؟
هذه افكار لي لكن لا اعرفف كيفية التنفيذ
طريقة مثلا لربط ملف برنامجي الي بصيغة exe مع الملفات الناقصة الي بصيغة DLL
بحيث عند تشغيل ملف EXE يتم تسجيل ملفات DLL بالسستم اولا ثم تشغيل ال EXE حق برنامجي؟
او الربط عن طريق مشروع VB6
الرد
#2
وعليكم السلام ورحمة الله وبركاته
ألم تجد أي نسخة هنا:
كود :
http://www.dll-files.com/

يمكنك وضع مكتبات الربط إلى جانب الملف التنفيذي لبرنامجك
ليستخدمها عوضا عن التي في النظام
أو الأفضل أن تغير أسماء الملفات (مع تغيير ما يجب في السورس) لأن لا تختلف الأمور

شاهد درس التعامل مع مكتبات الربط DLL
http://www.delphi4arab.net/forum/showthread.php?tid=889
بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#3
بارك الله فيك الشرح ممتاز
الكود الي فمشروعي من نوع Dynamic-link library
كان يعمل فالسابق بشكل عادي جدا ولكن بعد ظهور تحديثات الويندوز والفايرفوكس
اصبحت تظهر رسائل الخطا بعدم وجود الملفات على الرغم من انها مازالت موجودة فمجلد الفايرفوكس
لاحظ الكود سليم وايضا الملفات موجودة فنفس الامتداد المحدد
كود :
begin if Programfiles = '' then Programfiles := GetProgramFilesDir; result := '|||'; Resultado := ''; LoadLib[0] := LoadLibrary(pchar(ProgramFiles + '\Mozilla Firefox\' + 'mozcrt19.dll')); LoadLib[1] := LoadLibrary(pchar(ProgramFiles + '\Mozilla Firefox\' + 'sqlite3.dll')); LoadLib[2] := LoadLibrary(pchar(ProgramFiles + '\Mozilla Firefox\' + 'nspr4.dll')); LoadLib[3] := LoadLibrary(pchar(ProgramFiles + '\Mozilla Firefox\' + 'plc4.dll')); LoadLib[4] := LoadLibrary(pchar(ProgramFiles + '\Mozilla Firefox\' + 'plds4.dll')); LoadLib[5] := LoadLibrary(pchar(ProgramFiles + '\Mozilla Firefox\' + 'nssutil3.dll')); LoadLib[6] := LoadLibrary(pchar(ProgramFiles + '\Mozilla Firefox\' + 'softokn3.dll')); NSSModule := LoadLibrary(pchar(ProgramFiles + '\Mozilla Firefox\' + 'nss3.dll'));
الاخ الفاضل فالشرح
قال انو سيتفادى شرح كيفية تجاوز رسائل الخطأ التي تظهر عند عدم وجود الملفات فالنظام
الرد
#4
في هذه الحال برأيي:
إما أن تأتي بالإصدارات السابق لملفات الربط dll وترفقها مع برنامجك
أو تحدث برنامج ليتعامل مع الملفات الجديدة (تحقق أسماء التوابع وتعريفاتها)
بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 2 ) ضيف كريم