我正在使用下面的函式從當前的 EXE 檔案中獲取版本資訊。
問題是,在應用 Delphi 11 的 11 月補丁后,該功能開始使應用程式崩潰。
我的代碼如下。崩潰的行是這樣的:
VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
這是錯誤,在此之后應用程式關閉。這個相同的功能在補丁之前沒有問題。也許是一個錯誤的更新?

function TForm1.version : string;
var
VerInfoSize: DWord;
VerInfo: Pointer;
VerValueSize: DWord;
VerValue: PVSFixedFileInfo;
Dummy: DWord;
sfilename: string;
begin
sfilename := paramstr(0);
VerInfoSize := GetFileVersionInfoSize(pchar(sfilename), Dummy);
GetMem(VerInfo, VerInfoSize);
GetFileVersionInfo(pchar(sfilename), 0, VerInfoSize, VerInfo);
VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
with VerValue^ do
begin
Result := inttostr(dwFileVersionMS shr 16);
Result := Result '.' inttostr(dwFileVersionMS and $FFFF);
Result := Result '.' inttostr(dwFileVersionLS shr 16);
Result := Result '.' inttostr(dwFileVersionLS and $FFFF);
end;
FreeMem(VerInfo, VerInfoSize);
end;
uj5u.com熱心網友回復:
實際上問題是EXE檔案沒有任何版本資訊,并且生成了例外并且我沒有處理它。
以下答案中的代碼有效:
GetFileVersionInfoSize 和 GetFileVersionInfo 不回傳任何內容
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/375542.html
