INFO: دالة الفروق بين AscB تصاعدي AscW و Chr/ChrB/الدالة ChrW

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

اضغط هنا لرابط المقالة باللغة الانجليزية145745
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الموجز
للحصول على السنوات قد تم المبرمجين الأساسية باستخدام في تصاعدي ثم دالات Chr الوصول ومعالجتها في ASCII مجموعة أحرف. مع ورود قبول Unicode في ومكونات نظم التشغيل والتطبيقات ، طورتها الحاجة إلى إصدارات دالتي تصاعدي و Chr المحسنة. يتضمن Microsoft Visual Basic (4.0 و أعلى) لـ Windows لتلبية هذا الطلب AscB/ChrB والدالات AscW/الدالة ChrW.
معلومات أخرى
Unicode عبارة عن مقياس تم تصميمه لاستبدال القياسي ANSI لترميز الأحرف في نموذج رقمي. لأنه يستخدم ANSI القياسية فقط بايت واحد لتمثيل كل حرف, وهو محدد بـ 256 حرف مختلف كحد أقصى. أثناء كافية لحاجات جماعة مستهدفة ويزداد الإنجليزية يقع قصيرة عند تعتبر السوق البرامج حول العالم. مقياس Unicode كل حرف يتم تمثيل وحدتي بايت ، بحيث مجموعة أحرف Unicode بأكمله يتضمن 65,536 المواقع المحتملة.

Microsoft Windows NT و Microsoft Windows 2000 و Microsoft OLE 2.0 هي بالكامل Unicode إلى ويمثل Visual Basic (4.0 و أعلى) كافة السلاسل داخليًا بتنسيق Unicode. دالات AscW و الدالة ChrW تسمح بالوصول إلى أحرف نطاق Unicode الكامل. تعمل هذه الدالات بنفس دالتي تصاعدي و Chr الأصلي الطريقة إلا أن دعم الوسائط من 0 إلى 65,535 بدلاً من مجرد من 0 إلى 255. إرجاع عدد كائنات Visual Basic (مثل إطار التصحيح التسمية ومربع النص) "؟" عند هذه الكائنات لا تعرف كيفية عرض على حرف Unicode.

لأنه يتم الآن تمثيل كافة السلاسل داخليًا بتنسيق Unicode ، ليس بسيطاً المستخدمة في يمكن لتمثيل البيانات الثنائية في سلسلة. استخدام دالة Chr لتعيين بيانات إلى سلسلة ولن تؤدي نفس السلوك كما قبل. على سبيل المثال:
   stringvar = Chr(65)				

النتائج في اثنين بايت سلسلة طويلة، حيث يكون البايت 1 يحتوي على قيمة 65 و بايت 2 قيمة من 0 (هذا هو تمثيل Unicode الخاص الحرف "A"). تأكد من تذكر أن التحويل من ANSI إلى Unicode لا دوماً entail إضافة بايت ثاني مع قيمة صفر تماماً كما يفعل في هذه الحالة. على سبيل المثال، أن معظم رموز الأحرف ANSI في نطاق 130 159 تحتوي على قيم Unicode مختلفة تماماً. حاول تنفيذ 'Debug.Print AscW(Chr(130))' ولم يتم عرض قيمة 8218.

حالياً، Microsoft Windows تتطلب القليل endian المعالج ، مما يعني أنه يتم في وحدة بايت متعددة البايت الأول على الأقل الهامة وزيادة الأهمية بالبايت المتتابعة. هذا يفسر سبب حرف Unicode "A" يتم تمثيل داخليًا التالية:
   -------------------   |   65   |    0   |   -------------------     byte 0     byte 1				

يمكن استخدام الدالات AscB و ChrB نسخاً متماثلاً ما يستخدم ذلك من قبل دالات تصاعدي Chr ، لأن هذه الدالات تسمح معالجة كميات ببايت واحد. إذا كنت ترغب في سلسلة البايت الأربعة التي تحتوي على القيم الثنائية من 65 و 66 67 و 68 بالتتالي ثم استخدام الدالة Chr لا يعمل. يجب عليك استخدام الدالة ChrB بدلاً من ذلك. على سبيل المثال:
   stringvar = ChrB(65) & ChrB(66) & ChrB(67) & ChrB(68)				

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

المسرود أدناه شرح نتائج بعض الاستخدامات البسيطة هذه الدالات لتوضيح هذه المعلومات بشكل أكبر.

طباعة Asc(Chr(255))--> "255"

لا يوجد شئ جديد هنا، فيما عدا أن الدالة Chr بإرجاع حرف Unicode التي يشغلها وحدتي بايت بدلاً من حرف ANSI بايت واحد.

طباعة Asc(ChrB(255))--> استدعاء إجراء غير صالح 5.

استخدام هذا إرجاع خطأ لأن تتوقع الدالة تصاعدي معلمة اثنين بايت على الأقل دائماً بإرجاع دالة ChrB ببايت واحد فقط.

طباعة Asc(Chr(256))--> استدعاء إجراء غير صالح 5.

على الرغم من أن ترجع الدالة Chr حرف Unicode اثنين بايت ، لا يزال تستغرق أرقام بين 0 و 255 الوسيطة الخاصة بها (لاحظ أن على نظام DBCS تمكين تصاعدي/Chr معالجة أحرف DBCS اثنين بايت التحويل من Unicode). يسمح استخدام الدالة الدالة ChrW الوصول إلى مواقع حرف Unicode 65,536 الكامل.

طباعة AscW(ChrW(256))--> "256"

هذا هو الإصدار الجديد من العبارة الأولى في هذا القسم. الدالة الدالة ChrW قيمة من 0 إلى 65,536 ويرجع ذلك الحرف (في أنظمة 32-بت). يفسر هذا الحرف اثنين بايت كـ حرف Unicode الدالة AscW وتقوم بإرجاع قيمة Unicode الصحيح ذلك الحرف.

طباعة Asc(ChrW(256))--> "65"
طباعة Asc(ChrW(5000))--> "63"

ما يحدث هنا هو أن الدالة الدالة ChrW يتم يتم حسابها أولاً. ChrW(256) الحرف "A" ، و بحيث تقلل الدالة Asc("A") ويتم هو رقم Unicode (و ANSI) "A". لأنه لم Visual Basic تعرف كيفية عرض الحرف الذي يمثله Chr(5000) فإنه يعرض "؟" ، و كما هو متوقع, Unicode و ANSI القيمة لـ "؟" هو 63.

طباعة AscB(Chr(65))--> "65"
طباعة AscB(ChrW(256))--> "0"
طباعة AscB(ChrW(257))--> "1"
طباعة AscB(ChrW(555))--> "43"
طباعة AscB(ChrW(65535))--> "255"

كافة هذه بإرجاع قيم يمكن أن يكون شرح عن طريق فهم كيفية تمثيل كل حرف داخليًا (راجع مرجع endian صغيرة أعلاه) بواسطة الحقيقة الدالة AscB يبحث فقط في البايت الأول من حرف يتلقى. بشكل مرئي ويبدو مثل الرسم التخطيطي التالي:
             -------------------   Chr(65)   |   65   |    0   |             -------------------   Chr(256)  |    0   |    1   |            -------------------   Chr(257)  |    1   |    1   |             -------------------   Chr(555)  |   43   |    1   |             -------------------   Chr(65535)|   255  |  255   |             -------------------               byte 0    byte 1				

ترجع الدالة AscB فقط كل ما البايت الأول من الحرف.

--> ChrB(65) الطباعة ""

طباعة أي شيء استدعاء هذه الدالة ChrB Visual Basic لأن الدالة ChrB فقط بإرجاع سلسلة أحرف ذات بايت واحد. سلاسل بايت واحد مثل هذا يعني أي شيء إلى Visual Basic بسبب أنها تكوّن غير صالح حرف Unicode (أو سلسلة من الأحرف).

الطباعة ChrB(65) & ChrB(0)--> "A"

في هذه الحالة، يتم نقوم وصل سلسلتين بايت واحد إلى سلسلة اثنين بايت واحد. ولأن النقش بت الناتج هو نفس نقش بت Unicode "A" ، الذي Visual Basic طباعة.

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

خصائص

رقم الموضوع: 145745 - آخر مراجعة: 12/04/2015 13:13:58 - المراجعة: 2.0

Microsoft Visual Basic 5.0 Learning Edition, Microsoft Visual Basic 6.0 Learning Edition, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Visual Basic Enterprise Edition for Windows 6.0, Microsoft Visual Basic 4.0 Standard Edition, Microsoft Visual Basic 4.0 Professional Edition, Microsoft Visual Basic 4.0 Professional Edition, Microsoft Visual Basic 4.0 16-bit Enterprise Edition, Microsoft Visual Basic 4.0 32-Bit Enterprise Edition

  • kbnosurvey kbarchive kbmt kbinfo KB145745 KbMtar
تعليقات