procedure GetBuildInfo(var V1, V2, V3, V4: Word);
var
VerInfoSize,
VerValueSize,
DummyWORD;
VerInfo:Pointer;
VerValue:PVSFixedFileInfo;
begin
VerInfoSize:=GetFileVersionInfoSize(PChar(ParamStr(0)),Dummy);
GetMem(VerInfo,VerInfoSize);
GetFileVersionInfo(PChar(ParamStr(0)),0,VerInfoSize,VerInfo);
VerQueryValue(VerInfo, '\',Pointer(VerValue),VerValueSize);
with VerValue^ do
begin
V1 := dwFileVersionMS shr 16;
V2 := dwFileVersionMS and $FFFF;
V3 := dwFileVersionLS shr 16;
V4 := dwFileVersionLS and $FFFF;
end;
FreeMem(VerInfo, VerInfoSize);
end;
function Version:string;
var
v1,v2,v3,v4:Word;
begin
try
GetBuildInfo(v1,v2,v3,v4);
Result := IntToStr(v1)+'.'+IntToStr(v2);
if v3<>0 then Result := Result + '.' + IntToStr(v3);
except
Result := '';
end;
end;