| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 
 | function GetFileVersion(const FileName: String): String;var
 VersionInfoSize, VersionInfoValueSize, Zero: DWord;
 VersionInfo, VersionInfoValue: Pointer;
 begin
 
 if not FileExists(FileName) then
 begin
 Result := '-1';
 Exit;
 end;
 
 
 Result := '';
 VersionInfoSize := GetFileVersionInfoSize(PChar(FileName), Zero);
 if VersionInfoSize = 0 then Exit;
 
 GetMem(VersionInfo, VersionInfoSize);
 try
 if GetFileVersionInfo(PChar(FileName), 0, VersionInfoSize, VersionInfo) and
 VerQueryValue(VersionInfo, '\' , VersionInfoValue,
 VersionInfoValueSize) and (0 <> LongInt(VersionInfoValueSize)) then
 begin
 with TVSFixedFileInfo(VersionInfoValue^) do
 begin
 Result := IntToStr(HiWord(dwFileVersionMS));
 Result := Result + '.' + IntToStr(LoWord(dwFileVersionMS));
 Result := Result + '.' + IntToStr(HiWord(dwFileVersionLS));
 Result := Result + '.' + IntToStr(LoWord(dwFileVersionLS));
 end;
 end;
 finally
 FreeMem(VersionInfo);
 end;
 end;
 |