![]() |
|
كيفية استخدام تابع ضمن ملف 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=5516) |
كيفية استخدام تابع ضمن ملف dll - hytham100sy - 03-09-2013 السلام عليكم لدي مشكله في التعامل مع تابع ضمن ملف SNAPI.dll التابع موصف كالآتي: PHP كود : SNAPI_Init Lifecycle Commandولكم جزيل الشكر كيفية استخدام تابع ضمن ملف dll - hytham100sy - 03-09-2013 للتوضيح اكثر استخدمت الكود التالي: PHP كود : unit Unit1;access violation at address 10004f61 in module 'snapi.dll'. write of address 000000 كيفية استخدام تابع ضمن ملف dll - Najy Ibraheem - 03-09-2013 السلام عليكم... أعتقد أن المشكلة في تصريح الدالة SNAPI_Init من حيث تعريف البارامترات. فالشرح المرفق يبين أن البارامتر الثاني و الثالث يجب أن يكونا مؤشرين (Pointers). فالثاني مؤشر إلى مصفوفة من النوع Handle (في دلفي THandle) و الثالث مؤشر إلى متغير من النوع int (في دلفي Integer). = قبل التصريح عن الدالة عرف نوع مصفوفة من النوع THandle و نوع مؤشر (Pointer) لها. كود : TDHArray = array of THandle;
PDHArray = ^TDHArray;= اجعل التصريح عن الدالة كالتالي. و بما أن التعريف الأصلي للدالة يحتوي على عبارة stdcall فمن المهم جداً تضمين هذه العبارة في تصريح دلفي أيضاً: كود : function SNAPI_Init(hwnd: HWND; DeviceHandles: PDHArray; NumDevices: PInteger): Integer; stdcall; external 'SNAPI.dll';= في إجراء الزر غير تعريف المصفوفة كالتالي: كود : dh: TDHArray;= ثم قم بتحديد حجمها و تهيئتها: كود : SetLength(dh, 10);
for i := 0 to 9 do
dh[i] := 0;
n := 0;= أخيراً يكون الاستدعاء كالتالي: كود : l := SNAPI_Init(Form1.Handle, @dh, @n);* إذا لم ينجح فجرب إرسال عنوان أول عنصر في المصفوفة: كود : l := SNAPI_Init(Form1.Handle, @dh[0], @n);كيفية استخدام تابع ضمن ملف dll - hytham100sy - 04-09-2013 شكرا اخي ناجي تم تنفيذ التابع بنجاح واطلب تفسيرك إذا كان بالامكان للتابعين التاليين ضمن نفس المكتبة وشكرا: التابع الأول SNAPI_SnapShot: PHP كود : SNAPI_SnapShot Host to Scanner Commandالتابع الآخر : PHP كود : SNAPI_GetSerialNumber Data Request Commandفي التابع الثاني كيفية معرفة ماهي قيمه المتغير |