Files Delphi

Title: Getting an exe file type
Question: How can I get an exe file type?
Answer:
Is it useful,I don't know, but sometimes you want to know it.
Then, you will use below function which gives us an exe file type.
type
TExeType = (Unknown, DOS, WinNE, WinPE);
const
ExeStrings: array[TExeType] of string =
('Unknown', 'DOS', '16Bit', '32Bit');
function ExeFileType(const FileName: string): TExeType;
var
Signature, HeaderOffsetAddress: Word;
FileExe: TFileStream;
begin
Result := Unknown;
try
FileExe := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone);
try
FileExe.ReadBuffer(Signature, SizeOf(Signature));
if Signature = $5A4D { 'MZ' } then
begin
Result := DOS;
FileExe.Seek($18, soFromBeginning);
FileExe.ReadBuffer(HeaderOffsetAddress, SizeOf(HeaderOffsetAddress));
if HeaderOffsetAddress = $40 then
begin
with FileExe do
begin
Seek($3C, soFromBeginning);
ReadBuffer(HeaderOffsetAddress, SizeOf(HeaderOffsetAddress));
Seek(HeaderOffsetAddress, soFrombeginning);
ReadBuffer(Signature, SizeOf(Signature));
end;
if Signature = $454E { 'NE' } then
Result := WinNE
else
if Signature = $4550 { 'PE' } then
Result := WinPE;
end;
end;
finally
FileExe.Free;
end;
except
end;
end;
//sample call;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(ExeStrings[ExeFileType('C:\windows\calc.exe')]);
end;