H
honestman
Unregistered / Unconfirmed
GUEST, unregistred user!
程序如下:
// fn 是文件名称和路径
// ma,mi,r,b 是版本号
// 如 1.0.3.20 那么 ma=1,mi=0,r=3,b=20
function TmainForm.GetFileVersion(fn: string; var ma, mi, r ,b: integer):boolean;
var
buf, p: pChar;
sver: ^VS_FIXEDFILEINFO
i: LongWord;
begin
i:= GetFileVersionInfoSize(pchar(fn), i);
new(sver);
p:= pchar(sver);
GetMem(buf, i);
ZeroMemory(buf, i);
result:= false;
if GetFileVersionInfo(pchar(fn), 0, 4096, pointer(buf)) then
if VerQueryValue(buf, '/', pointer(sver), i) then begin
ma:= sVer^.dwFileVersionMS shr 16;
mi:= sver^.dwFileVersionMS and $0000ffff;
r:= sver^.dwFileVersionLS shr 16;
b:= sver^.dwFileVersionLS and $0000ffff;
result:= true;
end;
Dispose(p);
FreeMem(buf);
end;
procedure TmainForm.FormCreate(Sender: TObject);
var
ma, mi, r ,b: integer;
begin
l_title.Caption:='XXXXXX信息管理系统';
mainform.Caption:=l_title.Caption;
getfileversion(Application.ExeName,ma,mi,r,b);
l_ver.Caption:='Ver '+inttostr(ma)+'.'+inttostr(mi)+'.'+inttostr(r)+'.'+inttostr(b);
end;
开始的时候,运行时版本显示是正常的。但是不知道为什么在某次编译后,运行时版本显示变成
“0.0.0.0”了,而在Delphi源代码Project->Options...中的版本号一直都是正常的。
为什么???
而且那次编译并没有修改这方面的代码啊!
// fn 是文件名称和路径
// ma,mi,r,b 是版本号
// 如 1.0.3.20 那么 ma=1,mi=0,r=3,b=20
function TmainForm.GetFileVersion(fn: string; var ma, mi, r ,b: integer):boolean;
var
buf, p: pChar;
sver: ^VS_FIXEDFILEINFO
i: LongWord;
begin
i:= GetFileVersionInfoSize(pchar(fn), i);
new(sver);
p:= pchar(sver);
GetMem(buf, i);
ZeroMemory(buf, i);
result:= false;
if GetFileVersionInfo(pchar(fn), 0, 4096, pointer(buf)) then
if VerQueryValue(buf, '/', pointer(sver), i) then begin
ma:= sVer^.dwFileVersionMS shr 16;
mi:= sver^.dwFileVersionMS and $0000ffff;
r:= sver^.dwFileVersionLS shr 16;
b:= sver^.dwFileVersionLS and $0000ffff;
result:= true;
end;
Dispose(p);
FreeMem(buf);
end;
procedure TmainForm.FormCreate(Sender: TObject);
var
ma, mi, r ,b: integer;
begin
l_title.Caption:='XXXXXX信息管理系统';
mainform.Caption:=l_title.Caption;
getfileversion(Application.ExeName,ma,mi,r,b);
l_ver.Caption:='Ver '+inttostr(ma)+'.'+inttostr(mi)+'.'+inttostr(r)+'.'+inttostr(b);
end;
开始的时候,运行时版本显示是正常的。但是不知道为什么在某次编译后,运行时版本显示变成
“0.0.0.0”了,而在Delphi源代码Project->Options...中的版本号一直都是正常的。
为什么???
而且那次编译并没有修改这方面的代码啊!