[Delphi] Conoscere la versione dell’eseguibile.
Chi programma in Delphi si è accorto che, andando sul menu Project –> Options –> Version Info, si ha la possibilità di abilitare e conoscere la versione dell’eseguibile, includendo tali informazioni nell’applicazione stessa, l’unico neo è che per leggere tali dati dobbiamo costruirci una funzione ad-hoc.
Quindi come procedere?
Dopo aver messo il flag alla voce: Include version information in project, si abilita il check box Auto-increment build number, inserire anche qui il segno di spunta, visualizzare il codice della form e inserire la seguente funzione:
function LeggiLaVersione(const NomeFile:string; out Versione, SottoVer, Release, Build: integer): Boolean;
var
InfoSize, Wnd:DWORD;
VerBuf: Pointer;
FM: PVSFixedFileInfo;
VerSize: DWORD;
begin
Result := False;
Versione := 0;
SottoVer := 0;
InfoSize := GetFileVersionInfoSize(PChar(NomeFile), Wnd);
if InfoSize <> 0 then
begin
GetMem(VerBuf, InfoSize);
try
if GetFileVersionInfo(PChar(NomeFile), Wnd, InfoSize, VerBuf) then
if VerQueryValue(VerBuf, ‘\’, Pointer(FM), VerSize) then
begin
Versione := FM.dwFileVersionMS div $10000;
SottoVer := FM.dwFileVersionMS mod $10000;
Release := FM.dwFileVersionLS div $10000;
Build := FM.dwFileVersionLS mod $10000;
Result := True;
end;
finally
FreeMem(VerBuf);
end;
end;
end;
A questo punto dobbiamo dichiarare una seconda funzione, MiaVersione, quest’ultima ognuno potrà adattarla alle proprie esigenze:
function MiaVersione: string;
var
v, sv, r, b: integer;
begin
if LeggiLaVersione(Application.ExeName,v,sv,r,b) then
Result := Format(’%d.%d.%d.%d’, [v,sv,r,b])
else
Result := ”;
end;
Per visualizzare il numero di versione dell’eseguibile basta inserire sulla form un campo di testo statico, nel mio esempio lo chiamo stVersione, dopo di che assegno all’evento FormCreate della form il seguente codice:
stVersione.Caption := MiaVersione;
Adesso non rimane che avviare l’applicazione e controllare il numero della versione riportata sul campo di testo.