Einzelnen Beitrag anzeigen

Glados
(Gast)

n/a Beiträge
 
#12

AW: Delphi 10.2 Tokyo Starter

  Alt 26. Jul 2017, 21:59
Versuchs mal hiermit

Delphi-Quellcode:

function getVersionInfo(FileName, InfoStr: string; const withBuild: Boolean = False): string;
var
 VersionInfoSize, VerInfoSize, GetInfoSizeJunk: DWORD;
 VersionInfo, Translation, InfoPointer: Pointer;
 VersionValue, tmpRes: string;
begin
 Result := '';

 VerInfoSize := GetFileVersionInfoSize(PChar(FileName), GetInfoSizeJunk);

 if VerInfoSize > 0 then
  begin
   GetMem(VersionInfo, VerInfoSize);

   try
    GetFileVersionInfo(PChar(FileName), 0, VerInfoSize, VersionInfo);

    VerQueryValue(VersionInfo, '\\VarFileInfo\\Translation', Translation, VerInfoSize);
    VersionValue := '\\StringFileInfo\\' + IntToHex(LoWord(Integer(Translation^)), 4) + IntToHex(HiWord(Integer(Translation^)), 4) + '\\';
    VersionInfoSize := 0;

    if InfoStr = 'Buildthen
     begin
      VerQueryValue(VersionInfo, PChar(VersionValue + 'FileVersion'), InfoPointer, VersionInfoSize);
      tmpRes := PChar(InfoPointer);
      tmpRes := Copy(tmpRes, LastDelimiter('.', tmpRes) + 1, Length(tmpRes));
     end
    else
     begin
      VerQueryValue(VersionInfo, PChar(VersionValue + InfoStr), InfoPointer, VersionInfoSize);
      tmpRes := PChar(InfoPointer);
      if (InfoStr = 'FileVersion') and (not withBuild) then
       tmpRes := Copy(tmpRes, 1, LastDelimiter('.', tmpRes) - 1);
     end;

    Result := tmpRes;
   finally
    FreeMem(VersionInfo);
   end;
  end;
end;

... := getVersionInfo(ParamStr(0), 'FileVersion');
... := getVersionInfo(ParamStr(0), 'LegalCopyright');
... := getVersionInfo(ParamStr(0), 'Build');
Geht sicher schöner. Könnt ihr ja vielleicht schöner machen, ich wüsste nicht wie. Aber es funktioniert perfekt von Windows XP bis Windows 10.
  Mit Zitat antworten Zitat