this code works for me
...
Implementation
Uses windows ;
function TFMainform.myGetVersion(filename:string=''): String;
var
my :record
Dummy: DWord;
VerInfo: Pointer;
VerInfoSize: DWord;
VerValueSize: DWord;
VerValue: PVSFixedFileInfo;
end;
begin
Result:='';
my.Dummy:=0; // to keep the compiler happy
if filename='' then filename:=ParamStr(0);
my.VerInfoSize := GetFileVersionInfoSize(PChar(filename), my.Dummy);
if my.VerInfoSize=0 then
exit;
GetMem(my.VerInfo, my.VerInfoSize);
GetFileVersionInfo(PChar(filename), 0, my.VerInfoSize, my.VerInfo);
VerQueryValue(my.VerInfo, '\', Pointer(my.VerValue), my.VerValueSize);
with my.VerValue^ do begin
result := IntTostr(dwFileVersionMS shr 16);
result := result+'.'+ IntTostr(dwFileVersionMS and $FFFF);
result := result+'.'+ IntTostr(dwFileVersionLS shr 16);
result := result+'.'+ IntTostr(dwFileVersionLS and $FFFF);
end;
FreeMem(my.VerInfo, my.VerInfoSize);
end;
{ TFMainform }
Procedure TFMainform.FormCreate(Sender: TObject);
Begin
RevStr := 'Rev:' + myGetVersion('');
end;