如何确定Delphi应用程序版本问题,怎么解决

2025-04-28 00:54:33
推荐回答(1个)
回答1:

  • function ShowVersion:String; //     获得应用程序的版本号  

  • var  

  • VerInfo : PChar;  

  • lpTranslate : PLANGANDCODEPAGE;  

  • FileName:String;  

  • VerInfoSize, VerSize, cbTranslate : DWORD;  

  • VerValueSize : DWORD;  

  • Data : String;  

  • VerFileV:PChar;  

  • lpFileVersion:string;  

  • begin  

  • Result := '0.0.0.0';  

  • FileName := Application.ExeName;  // 应用程序对应的 exe 文件  

  • VerInfoSize := GetFileVersionInfoSize(PChar(FileName),VerSize);  

  • if VerInfoSize > 0 then  

  • begin  

  • VerInfo := AllocMem(VerInfoSize);  

  • GetFileVersionInfo(PChar(FileName),0,VerInfoSize,VerInfo);  

  • VerQueryValue(VerInfo, PChar('/VarFileInfo/Translation'), Pointer(lpTranslate),cbTranslate);  

  • if cbTranslate <> 0  then  

  • begin  

  • Data := format('/StringFileInfo/%.4x%.4x/FileVersion',[lpTranslate^.wLanguage,lpTranslate^.wCodePage]);  

  • VerQueryValue(VerInfo, PAnsiChar(data),Pointer(VerFileV), VerValueSize);  

  • if VerValueSize <> 0 then  

  • begin  

  • SetString(lpFileVersion,VerFileV,VerValueSize-1);  

  • Result:=lpFileVersion;  

  • end;  

  • end;  

  • FreeMem(VerInfo,VerInfoSize);  

  • end  

  • else  

  • begin  

  • Result:='0.0.0.0';  

  • Application.MessageBox('获取文件版本信息时遇到致命错误,请重新打开软件。','错误',MB_OK+MB_ICONSTOP);  

  • Application.Terminate;  

  • end;  

  • end;