[fpc-pascal] Function to know if WIN is 32 or 64
    Henry Vermaak 
    henry.vermaak at gmail.com
       
    Tue Mar 15 15:35:21 CET 2011
    
    
  
On 15 March 2011 14:25, Marcos Douglas <md at delfire.net> wrote:
> On Tue, Mar 15, 2011 at 11:13 AM, Henry Vermaak <henry.vermaak at gmail.com> wrote:
>>
>> On 15 March 2011 14:05, Marcos Douglas <md at delfire.net> wrote:
>> > Is there some function to know if the Windows is 32 or 64?
>>
>> You can use the GetNativeSystemInfo function.  Check
>> TSystemInfo.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_AMD64 to
>> see if it's 64 bit.
>
> What unit?
None, since the minimum supported client is XP.  Try to load it yourself, e.g.:
type
  TGNSIProc = procedure (var lpSystemInfo: TSystemInfo); stdcall;
const
  PROCESSOR_ARCHITECTURE_AMD64 = 9;
function Isx64: Boolean;
var
  si: TSystemInfo;
  GNSIProc: TGNSIProc;
begin
  Result := False;
  ZeroMemory(@si, SizeOf(si));
  @GNSIProc := GetProcAddress(GetModuleHandle('kernel32.dll'),
    'GetNativeSystemInfo');
  if @GNSIProc = nil then
    Exit;
  GNSIProc(si);
  if si.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_AMD64 then
    Result := True;
end;
This ignores ia64, as you can see.
Henry
    
    
More information about the fpc-pascal
mailing list