استخدام SETMEM وshell في QuickBasic 4.50 المشكلة

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

62267
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الأعراض
استخدام دالة SETMEM مع معلمة أقل من 0 (صفر) في إصدارات Microsoft QuickBasic 4.00 و 4.00b 4.50 إلغاء تخصيص ذاكرة من الكومة الخاصة Basic أقصى. عادةً، يمكن أن يكون regained الذاكرة بواسطة استدعاء آخر لـ SETMEM مع معلمة موجبة. ومع ذلك، إذا تنفيذ عبارة SHELL بين الاستدعاءات اثنين إلى SETMEM ، البرنامج لن تتمكن لاستعادة الذاكرة. ويحدث هذا كليهما تنفيذ من بيئة QB.EXE أو كملف قابل للتنفيذ (.EXE) التي يستخدمها الوحدة النمطية BRUNxx.EXE وقت التشغيل. الحل الوحيد ترجمة البرنامج مثل EXE مستقل باستخدام BC.EXE مع الخيار /O.
تصريح
أقرت Microsoft أن يكون خطأ في 4.00 QuickBasic 4.00b ، 4.50 ثم في إصدارات Microsoft المحول البرمجي أساسي 6.00 و 6.00b لـ MS-DOS (buglist6.00 ، buglist6.00b) هذا. تم تصحيح هذه المشكلة في Microsoft Professional تطوير النظام (PDS) الإصدار 7.00 لـ MS-DOS (fixlist7.00).
معلومات أخرى
نموذج التعليمات البرمجية التالي reproduces هذه المشكلة:
    before& = FRE(-1)                ' Get original Value.   temp& = SETMEM(-30000)           ' Deallocate memory.   SHELL "CLS"   temp& = SETMEM(30000)            ' Try to Reallocate memory.   after& = FRE(-1)                 ' Get New value, which should be                                    ' the same value as the original.   CLS   PRINT "Before Call: "; before&   ' If the difference between these   PRINT "After  Call: "; after&    ' two values is 30000 then the                                    ' problem is reproduced.   differ& = before& - after&   PRINT " Difference  ";differ&    ' This should be 0.				
buglist4.50 buglist4.00b buglist4.00 BasicCom B_BasicCom QuickBas

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

خصائص

رقم الموضوع: 62267 - آخر مراجعة: 02/28/2014 00:20:38 - المراجعة: 1.2

  • kbnosurvey kbarchive kbmt KB62267 KbMtar
تعليقات