سؤال

ويمكنني إعادة تعيين CTRL FPU ليسجل مع هذا:

http://support.microsoft.com/kb/326219

ولكن كيف يمكنني حفظ السجلات الحالية، واستعادتها لاحقا؟

وانها من التعليمات البرمجية صافي ..

ما أفعله، هو من دلفي استدعاء دلل صافي باعتبارها وحدة COM. التحقق من السيطرة السجلات في العائد دلفي قيمة واحدة، والتحقق مع controlfp في رمز صافي يعطي قيمة أخرى. ما احتاج اليه، هو في غنى هو أن تفعل هذا:

_controlfp(_CW_DEFAULT, 0xfffff); 

وهكذا حساباتي floatingpoint في رمز .NET لا يتعطل، ولكن أريد أن استعادة السيطرة السجلات عند عودته.

وربما أنا لا؟ ربما دلفي وإعادة لهم عند الحاجة؟ أنا كتبت عن هذه المشكلة هنا .

هل كانت مفيدة؟

المحلول

uses
   SysUtils;

var
   SavedCW: Word;
begin
   SavedCW := Get8087CW;
   try
     Set8087CW($027f);
     // Call .NET code here
   finally
     Set8087CW(SavedCW);
   end;
end;

نصائح أخرى

ونفس وظيفة التي تستخدمها لتغييرها: _controlfp(). إذا كنت تمر في قناع 0، لن يتم تغيير القيمة الحالية، ولكن سوف يعاد - حفظه، وتستخدم مكالمة ثانية ل_controlfp() لاستعادته لاحقا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top