Function getVersion (Sfile: string; bincludebuild: boolean): string;
VAR
DWFVW, DWZERO, DWVSF: DWORD;
Major, Minor, Release, Build: DWORD;
PFVW: PCHAR;
PVSF: pvsfixedfileinfo;
String;
Begin
Result: = '';
// attempt to read version info size
DWFVW: = getFileVersionFosize (pchar (sfile), dwzero; // EXIT ON Error
IF dwfvw <> 0 THEN Begin
GetMem (PFVW, DWFVW);
TRY // EXIT IF Unable to Retrieve Version Info
IF (Pchar (SfileVersionInfo (Pchar (SFILE), DWZERO, DWFVW, PFVW)) THEN Begin // Get The Build Value
IF (VERQUERYVALUE (PFVW, '/', Pointer (PVSF), DWVSF)) THEN BEGIN
IF ((pvsf ^ .dwfileflags and vs_ff_preelelease)> 0) THEN Begin
S: = 'beta;'
end
Else Begin
s: = '';
END;
// for Clarity Store in Temporary Variables
Major: = HiWord (pvsf ^ .dwfileversionms);
Minor: = loword (pvsf ^ .dwfileversionms);
Release: = HiWord (pvsf ^ .dwfileversionls);
Build: = loword (pvsf ^ .dwfileversionls);
// ALWAYS SHOW FULL BUILD NUMBERS from now gn .. 2/9/03
Result: = format ('Version% D.% D.% D Build% d', [Major, Minor, Release,
Build]);
IF Bincludebuild The Begin
IF Release> 0 Then Begin
Result: = format ('Version% D.% D.% D Build% d', [Major, Minor,
RELEASE, BUILD])
end
Else Begin
Result: = format ('Version% D.% D Build% D', [Major, Minor, Build])
END;
end
Else Begin
IF Release> 0 Then Begin
Result: = Format ('Version% D.% D.% D', [Major, Minor, Release])
end
Else Begin
Result: = Format ('Version% D.% D', [Major, Minor])
END;
END;
END;
END;
Finally
FreeMem (PFVW);
END;
END;
END;