![]() |
|
هل استطيع إستيراد دوال من ملف Dll واستعمالها ؟ - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : هل استطيع إستيراد دوال من ملف Dll واستعمالها ؟ (/showthread.php?tid=5092) |
هل استطيع إستيراد دوال من ملف Dll واستعمالها ؟ - ALmuhhnad - 31-03-2013 السلام عليكم ورحمة الله وبركاتة سؤالي : لدي برنامج يستعمل مكتبة Dll وفي هذه المكتبة دوال كيف استعمال تلك الدوال في برنامجي ؟ هل استطيع ؟ اضن نعم ؟ إذا نعم ... ولنفرض اني استعمل دوال في مكتبه اسمها python22.dll والدالة التي استعملها اسمها PyRun_SimpleFile ولا اعرف بارمتراتها... سؤالي كيف اقوم بإستدعاء تلك الدوال ؟ وكيف استعملها ...؟ [COLOR="SeaGreen"]علماً اني قمت بجلب اسم الدالة اقصد PyRun_SimpleFile من خلال إستعراضي للدوال المصدّرة للمكتبة في برنامج PE Explorer[/COLOR] اضن هذه العملية مطبقة على مكتبات النظام kerneal32 ,USER32...ETC هل استطيع إستيراد دوال من ملف Dll واستعمالها ؟ - SMP3 - 31-03-2013 حقيقة الأمر ملخبط قليلا ... على حسب نوع الدالة و برامترتها أولا ان كانت الدالة تستعمل برامترات عادية من نوع char , integer , string , .. الخ الطريقة سهلة لللتعامل مع الدالة يكفي معرفة اسم الدالة ثم دفع البرامترات و تنفيذ الدالة أما اذا كانت البرامترات من نوع Object أو كلاس .. فهنا مشكلة ==> ضروري أن تعرف البرامتر لتنفيذ الدالة أغلب الدوالfunction التي ترجع بقيم TObject تستعمل ما يعرف بال Interface ... لتسهيل العمل بها و مع هذا ستحتاج الى تعريف ال interface في برنامجك الذي يستعمل ال dll لذا من الضروري أن تعرف طبيعة البرامترات .. حاول الاطلاع على السورس ان كانت مفتوحة المصدر هل استطيع إستيراد دوال من ملف Dll واستعمالها ؟ - ALmuhhnad - 31-03-2013 نعم هي مفتوحه المصدر بالـ C واضن يوجد كذلك بالـ Delphi ... هممم ... اضنها تتعامل مع بارمترين الاول string والآخر Integer ووضيفة الدالة هي فتح ملف بتصريح ما وعلى ما اعتقد انها تواجه الدالة FileOpen في دلفي ... هذا احد إستعمالات الدالة وجدته على النت : PHP كود : main.cppوبعد ان حصلت على البارمترات ... واضن انه لا مشكلة في التعامل معها ... كيف اقوم بإستدعائها وإستعمالها ؟ حصلت على هذا التعريف للدالة من الكود المصدري للمكتبة بلغة السي : PHP كود : DL_IMPORT(int) PyRun_SimpleFile(FILE *, char *); هل استطيع إستيراد دوال من ملف Dll واستعمالها ؟ - SMP3 - 31-03-2013 اذن البرامتر عادية .. اذن لا مشكلة استعمل الدالة LoadLibrary لتحميل المكتبة Python.dll , ثم الدالة GetProcAddress وتمرير اسم الدالة وانتهينا .. أعتقد ان استعمالها سيكون بهذا الشكل -مع افتراض أن Delphi File = Cpp File type PHP كود : type PyRun_SimpleFileType = function(var f: file; s: PChar): boolean; stdcall;مجرد فضول .. لماذا تلجأ الى كل هذه التعقيدات !!! .. ودلفي تتيح لك كل ما يلزم للتعامل مع الملفات !!! هل استطيع إستيراد دوال من ملف Dll واستعمالها ؟ - ALmuhhnad - 31-03-2013 السلام عليكم ورحمة الله وبركاتة ... اهلا أخي المبرمج SMP3 ... بالنسبة للكود لن استطيع ان اجربه الآن لان الوقت قد تأهر @@" .. سيكون الحوار غداً إن وجد ![]() اتيت لارد على هذه فقط : إقتباس : مجرد فضول .. لماذا تلجأ الى كل هذه التعقيدات !!! .. ودلفي تتيح لك كل ما يلزم للتعامل مع الملفات !!!هههههههه , في الحقيقة انا مهوس ربما او متأكد اني مهوس بالـ Game Hacking ... وانا الآن اتعامل مع لعبة مبرمجة بالبايثون ومن سعد حضي اني سبق وان درست اساسيات هذه اللغة ... وبعد دراسة اللعبة وجدت اني استطيع تحميل سكربتاتلها تكون مكتوبه بالبايثون ... لذلك اردت ان اعمل ملف Dll اقوم بحقنه في اللعبة ... وبعد ذلك اقوم بتحميل السكربتات الخاصة باللعبة ... من خلال الـ Dll حيث ان الـ dll ستكون جزاء من عملية اللعبة وستأخذ صلاحياتها ... وساستعمل المكتبة التي تستعملها اللعبة ... كلام طويل @@" وانا فعلاً قد قمت ببرمجة برنامج لاعب آلي لهذه اللعبة التي اعمل عليها وانا اسعى لتطويره ... ومن خلال معرفتي لكيفية تحميل السكربت ساكون قد استطعت ان اطور البرنامج بشكل كبير P: بالمناسبة ... لم اشكرك على الاجابة ... شكراً لك على المسـاعـدة وجعلها في موازين حسناتك ... اراك غداً P: والسلام عليكم هل استطيع إستيراد دوال من ملف Dll واستعمالها ؟ - ALmuhhnad - 02-04-2013 السلام عليكم ورحمة الله وبركاتة احصل على خطاء عند تنفيذ الامر : كود : [color=Black]raise Exception.Create('Error ..');[/color]
[color=Red]PyRun_SimpleFile(myfile, 'a2l_reader.py');[/color] // here I get error
[color=Black]Py_Finalize := GetProcAddress(hLib, 'Py_Finalize');[/color]اعتقد يوجد خطاء في تعريف الدالة سابحث أكثر وارجع .. إلى هنا من جديد
هل استطيع إستيراد دوال من ملف Dll واستعمالها ؟ - SMP3 - 02-04-2013 ALmuhhnad كتب :اعتقد يوجد خطاء في تعريف الدالةلا ليس خطأ في تعريف الدالة : الخطأ أننا افترضنا أن Delphi FILE Type = Cpp FILE type هل استطيع إستيراد دوال من ملف Dll واستعمالها ؟ - ALmuhhnad - 02-04-2013 إقتباس : الخطأ أننا افترضنا أن delphi file type = cpp file type إذا تعتقد ان النوع يختلف في مكتبة بايثون عن ما هو موجود لدينا ... آمممم اعتقد انك محق ... لكن كيف احصل على النوع !؟ هل استطيع إستيراد دوال من ملف Dll واستعمالها ؟ - SMP3 - 03-04-2013 إقتباس :اعتقد انك محق ... لكن كيف احصل على النوع !؟لا أعلم .. لم أبرمج بالبايثون من قبل و خبرتي في السي ++ متوسطة ... كل ما علمه عن بايثون هي انها تحتاج الى مفسر ... اذن يمكنك الاطلاع على السورس ... |