Descobrir se o executável foi compilado para 32 ou 64 bits

Delphi

16/06/2014

Olá

Gostaria de saber como faço para retornar se minha aplicação em Delphi foi compilada para
win32 ou win64 (Arquitetura do executável, não do windows)
No caso o codigo fonte é o mesmo para as duas compilações,
mas vou tomar decisões diferentes(Para cada plataforma, vou buscar as dlls da respectiva plataforma)
Estou trabalhando com Delphi XE5
Gabriel Kissel

Gabriel Kissel

Curtidas 0

Respostas

Bhawan Junior

Bhawan Junior

16/06/2014

Não sei se você já encontrou a solução, encontrei neste link e modifiquei para a minha necessidade {https://www.devmedia.com.br/forum/funcao-para-descobrir-se-e-windows-32-ou-64bits/426921} abaixo segue o código. Espero que seja útil.

class function TRegras_iCloud.Windows_Plataforma: String;
type
TIsWow64Process = function(AHandle:THandle; var AIsWow64: BOOL): BOOL; stdcall;
var
vKernel32Handle: DWORD;
vIsWow64Process: TIsWow64Process;
vIsWow64: BOOL;
begin
Result := 'Sistema operacional Windows 64 Bits';

vKernel32Handle := LoadLibrary('kernel32.dll');
if(vKernel32Handle = 0)then
Exit;

try
@vIsWow64Process := GetProcAddress(vKernel32Handle, 'IsWow64Process');
if not Assigned(vIsWow64Process) then
Exit;

vIsWow64Process(GetCurrentProcess, vIsWow64);
if vIsWow64 then
Result := 'Sistema operacional Windows 64 Bits'
else
Result := 'Sistema operacional Windows 32 Bits';
finally
FreeLibrary(vKernel32Handle);
end;
end;
GOSTEI 0
Bhawan Junior

Bhawan Junior

16/06/2014

Colei o código errado, me perdoe, segue o correto, link e alteração para a minha necessidade!

{http://www.activedelphi.com.br/forum/viewtopic.php?t=76245&sid=a2a86b182152a6d9af469ee504ef3b42}


class function TRegras_iCloud.MOL_Plataforma: String;
begin
Result:='Software '+{$IFDEF WIN32} '32'{$ELSE} '64' {$ENDIF} + ' Bits'
end;

Me perdoe!!! Espero que ajude.
GOSTEI 0
POSTAR