Как определить наличие сопроцессора?

Previous  Top  Next

    
 

 

 

 

В отличие от общепринятого мнения не всее клоны 486/586/686/ и Pentium имеют сопроцессор для вычислений с плавающей запятой. В примере определяется наличие сопроцессора и под Win16 и под Win32.

Пример:

Code:

{$IFDEF WIN32}

 

uses Registry;

 

{$ENDIF}

 

function HasCoProcesser : bool;

{$IFDEF WIN32}

var

       TheKey : hKey;

{$ENDIF}

begin

       Result := true;

       {$IFNDEF WIN32}

       if GetWinFlags and Wf_80x87 = 0 then

       Result := false;

       {$ELSE}

       if RegOpenKeyEx(HKEY_LOCAL_MACHINE,

       'HARDWARE\DESCRIPTION\System\FloatingPointProcessor',0,

       KEY_EXECUTE, TheKey) <> ERROR_SUCCESS then result := false;

       RegCloseKey(TheKey);

{$ENDIF}

       end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

       if HasCoProcesser then

               ShowMessage('Has CoProcessor')

       else

               ShowMessage('No CoProcessor - Windows Emulation Mode');

end;

 

 

©Drkb::01432

Взято из

DELPHI VCL FAQ Перевод с английского        

Подборку, перевод и адаптацию материала подготовил Aziz(JINX)

специально для Королевства Дельфи