unit VersionInfo;


interface
uses windows,sysutils;
function GetVersionInfo(FileNameVar:string): string;


implementation


function GetVersionInfo(FileNameVar:string): string;
var V1,       // Major Version
    V2,       // Minor Version
    V3,       // Release
    V4: Word; // Build Number
    VerInfoSize, VerValueSize, Dummy : DWORD;
    VerInfo : Pointer;
    VerValue : PVSFixedFileInfo;
begin
   VerInfoSize := GetFileVersionInfoSize(PChar(FileNameVar), Dummy);
   GetMem(VerInfo, VerInfoSize);
   GetFileVersionInfo(PChar(FileNameVar), 0, VerInfoSize, VerInfo);
   if VerInfo=nil then begin
   result:='No Version Info';
   exit;
   end;
   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;
   Result :=  IntToStr(V1) + '.' + IntToStr(V2) + '.' + IntToStr(V3) + ' Build: ' + format('%.4d',[V4]);
   FreeMem(VerInfo, VerInfoSize);
end;



end.