function ReadVerInfo(const Filename :String):String; var VersionHandle, VersionSize : Dword; PVersionInfo : Pointer; FixedFileInfo : PVSFixedFileInfo; Il : Uint; Version : String; P : Array [0..MAX_PATH - 1] of char; begin Version:=''; Result :=''; if Filename<>'' then begin StrPCopy(P,Filename); VersionSize:=GetFileVersionInfoSize(P,VersionHandle); if VersionSize=0 then Exit; GetMem(PVersionInfo,VersionSize); try if GetFileVersionInfo(P,VersionHandle,VersionSize,PVersionInfo) then begin if VerQueryValue(PVersionInfo,'',Pointer(FixedFileInfo),Il) then Version:=IntToStr(Hiword(FixedFileInfo^.dwfileversionms))+ '.'+inttostr(loword(FixedFileInfo^.dwfileversionms))+ '.'+inttostr(hiword(FixedFileInfo^.dwfileversionls))+ '.'+inttostr(loword(FixedFileInfo^.dwfileversionls)); end; finally FreeMem(pversioninfo,versionsize); Result:=version; end; end; end;