Function getVersion (Sfile: string; bincludebuild: boolean): string;

xiaoxiao2021-03-06  42

Function getVersion (Sfile: string; bincludebuild: boolean): string;

VAR

DWFVW, DWZERO, DWVSF: DWORD;

Major, Minor, Release, Build: DWORD;

PFVW: PCHAR;

PVSF: pvsfixedfileinfo;

String;

Begin

Result: = '';

// attempt to read version info size

DWFVW: = getFileVersionFosize (pchar (sfile), dwzero; // EXIT ON Error

IF dwfvw <> 0 THEN Begin

GetMem (PFVW, DWFVW);

TRY // EXIT IF Unable to Retrieve Version Info

IF (Pchar (SfileVersionInfo (Pchar (SFILE), DWZERO, DWFVW, PFVW)) THEN Begin // Get The Build Value

IF (VERQUERYVALUE (PFVW, '/', Pointer (PVSF), DWVSF)) THEN BEGIN

IF ((pvsf ^ .dwfileflags and vs_ff_preelelease)> 0) THEN Begin

S: = 'beta;'

end

Else Begin

s: = '';

END;

// for Clarity Store in Temporary Variables

Major: = HiWord (pvsf ^ .dwfileversionms);

Minor: = loword (pvsf ^ .dwfileversionms);

Release: = HiWord (pvsf ^ .dwfileversionls);

Build: = loword (pvsf ^ .dwfileversionls);

// ALWAYS SHOW FULL BUILD NUMBERS from now gn .. 2/9/03

Result: = format ('Version% D.% D.% D Build% d', [Major, Minor, Release,

Build]);

IF Bincludebuild The Begin

IF Release> 0 Then Begin

Result: = format ('Version% D.% D.% D Build% d', [Major, Minor,

RELEASE, BUILD])

end

Else Begin

Result: = format ('Version% D.% D Build% D', [Major, Minor, Build])

END;

end

Else Begin

IF Release> 0 Then Begin

Result: = Format ('Version% D.% D.% D', [Major, Minor, Release])

end

Else Begin

Result: = Format ('Version% D.% D', [Major, Minor])

END;

END;

END;

END;

Finally

FreeMem (PFVW);

END;

END;

END;

转载请注明原文地址:https://www.9cbs.com/read-72825.html

New Post(0)