ACC2000: كيفية تحويل الأعداد الصحيحة غير مسجّل إلى أعداد صحيحة طويل

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية210571
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
متقدمة: يتطلب ترميز الخبير إمكانية التشغيل المتداخل و مهارات متعددة المستخدمين.

الموجز
هناك حالات في دالات استدعاء أي من مكتبات الارتباط الحيوي خارجي (dlls) إرجاع عدد صحيح بدون إشارة 2 بايت. لا يعتمد Visual Basic for Applications نوع البيانات هذا. بحيث يمكن الوصول بشكل صحيح تقييم هذا النوع من البيانات, تحتاج إلى تحويل من عدد صحيح بدون إشارة إلى نوع بيانات عدد صحيح طويل.
معلومات أخرى
تقدم Microsoft الأمثلة البرمجية فقط دون أي ضمان التعبير عن أو ضمنية. هذا يتضمن ولكن لم يقتصر على الضمانات الضمنية الخاصة بالتجارة أو الملاءمة لغرض معين. تفترض هذه المقالة تكون مألوفة مع لغة البرمجة التي يتم شرحها مع الأدوات التي يتم استخدامها لإنشاء لتصحيح الإجراءات. يمكن لمهندسي الدعم لدى Microsoft شرح وظيفة إجراء محدد ولكن لن يقوموا بتعديل هذه الأمثلة لتقديم وظيفة إضافية أو إنشاء إجراءات تستوفي متطلبات محددة. نوع البيانات عدد صحيح يحتوي نطاق -32,768 إلى 32,767. عدد صحيح بدون إشارة تحتوي على نطاق من 0 إلى 65,536.

يستخدم الوصول بت الأكثر أهمية تعيين تسجيل القيمة. لذلك، عند تجاوز قيمة 32,767 ، يتم تعيين بت 16 لعكس رقم سالب. تقييم عدد صحيح بدون إشارة ، يجب عليك يدوياً ضبط 16 بت.

توجد طريقتان لتحويل من النوع عدد صحيح بدون إشارة إلى نوع البيانات عدد صحيح طويل. يستخدم الأسلوب الأول الحسابي الأساسية (65,536 يتم طرح أو إضافة إلى عدد صحيح بدون إشارة). يستخدم الثاني عوامل التشغيل على أساس البت. يعمل الأسلوب حسابي بالإضافة إلى أسلوب أساس البت; ومع ذلك، قد يكون أسلوب حسابي أكثر قابلية للقراءة بينما قد يكون أسرع عند تنفيذ repetitively أسلوب أساس البت.

افتح وحدة نمطية جديدة أو وحدة نمطية إنشاؤها مسبقاً ثم أدخل التعليمة البرمجية التالية:
'*************************************************************'Declarations section of the module.'*************************************************************Option Explicit'=============================================================' Arithmetic Method:' ------------------' Create the following ar_ConvertFromUnsignedInteger& (Uint%)'    and ar_ConvertToUnsignedInteger% (Bytes&) function in the'    Module. This first function reads in an unsigned integer'    and returns the converted value as a long. The second'    function reads in a long and returns an unsigned integer.'=============================================================Function ar_ConvertFromUnsignedInteger& (Uint%)   If Uint% < 0 Then      ar_ConvertFromUnsignedInteger& = Uint% + 65536   Else      ar_ConvertFromUnsignedInteger% = Uint%   End IfEnd FunctionFunction ar_ConvertToUnsignedInteger% (Bytes&)   If Bytes& > 32767 Then      ar_ConvertToUnsignedInteger% = Bytes& - 65536   Else      ar_ConvertToUnsignedInteger% = Bytes&   End IfEnd Function'=============================================================' Bitwise Method:' ---------------' Create the following bw_ConvertFromUnsignedInteger& (Uint%)'    and bw_ConvertToUnsignedInteger% (Bytes&) function in the'    Module. This first function reads in an unsigned integer'    and returns the converted value as a long. The second'    function reads in a long and returns an unsigned integer.'    The message box statement in the second function is used'    to prevent an overflow message when the value passed to'    the function is greater than 64 kilobytes.' To illustrate what is taking place in the first bitwise function:'    Uint% equals -23584, a value returned from an external dynamic'    link library that is an unsigned integer and must be'    converted to an long:'        1010001111100000 (-23584)'    AND   11111111111111 (7FFF)'        ----------------'          10001111100000 (41952)'=============================================================Function bw_ConvertToUnsignedInteger% (Bytes&)   Dim x%   If Bytes& > 65535 Then      MsgBox "You passed a value larger than 65535"      Exit Function   End If   x% = Bytes& And &H7FFF   bw_ConvertToUnsignedInteger% = x% Or -(Bytes& And &H8000)End FunctionFunction bw_ConvertFromUnsignedInteger& (Uint%)   bw_ConvertFromUnsignedInteger& = Uint% And &HFFFF&'-------------------------------------------------------------' The &HFFFF& requires the & at the end of the hex number. This'    qualifies the hex number as 32-bit versus 16-bit.'-------------------------------------------------------------End Function

أمثلة على استخدام هذه الدالات

يتطلب مكتبة الارتباط الحيوي خارجي وتقوم بإرجاع عدد صحيح بدون إشارة. بيان Declare يشبه التالي:
Declare Function External_Call% Lib "your.dll" (ByVal ValueToPass%) 
عبارة Declare يستخدم أنواع البيانات عدد صحيح لأنه لا يعتمد Access أعداد صحيحة بدون إشارة. ومع ذلك، مكتبة الارتباط الحيوي خارجي بإرجاع عدد صحيح بدون إشارة يجب تحويل ؛ لذلك، قد تظهر التعليمات البرمجية كما يلي:
x% = External_Call(bw_ConvertToUnsignedInteger%(41952))y& = bw_ConvertFromUnsignedInteger&(x%)
مراجع
للحصول على مزيد من المعلومات حول تحويل التعليمات البرمجية من إصدارات Microsoft Access سابقة في محرر Visual Basic، انقر فوق "تعليمات Microsoft Visual Basic" في القائمة "تعليمات" ، اكتب "تحويل التعليمات البرمجية الذي يستدعي DLL" في "مساعد Office" أو معالج الإجابة ثم انقر فوق بحث لعرض الموضوع.

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 210571 - آخر مراجعة: 01/30/2014 16:02:13 - المراجعة: 2.2

Microsoft Access 2000 Standard Edition

  • kbnosurvey kbarchive kbmt kbhowto kbprogramming KB210571 KbMtar
تعليقات