여기서 아래소스 자료(버젼관리)를 얻었습니다.
그러나 버젼을 얻어 오지 못하고 있습니다. 내가 이실행파일의 버젼을 등록하지 않아서 그런건지 아니면 내가 뭘 잘못한건지 에러는 안뜨는데 버젼을 볼수가 없어서요. 고수님들 부탁드립니다. (궁금한 부분은 제가 소스에 체크해 놓았습니다.)
이 것이 잘못되었다면 현재의 버젼 등록하는 방법과 버젼보는 방법좀 가르쳐 주세요
버젼을 project -->>option에서 등록한 후 어떤게 하는지 방법 도 좀 가르쳐 주세요.
소스를 보면
Function TVersion1.GetBlissFileVersion(FName : String) : String;
const
InfoNum = 10;
InfoStr : array [1..InfoNum] of String =
('CompanyName', 'FileDescription', 'FileVersion', 'InternalName',
'LegalCopyright', 'LegalTradeMarks', 'OriginalFilename',
'ProductName', 'ProductVersion', 'Comments');
var
n, i : Integer;
Len : Cardinal;
Buf : PChar;
Value : PChar;
Date, S : String;
mjv, mnv, rev, build : Integer;
mvs : String;
BEGIN
n := GetFileVersionInfoSize(PChar(FName),Len);
Date := GetFileDateString(FName);
If n > 0 then
Begin
Buf := AllocMem(n);
GetFileVersionInfo(PChar(FName),0,n,Buf);
If VerQueryValue(Buf,PChar('StringFileInfo 40904E4FileVersion'),Pointer(Value),Len) Then
Begin
Try //이부분에서 value값이 nil이 나와서 except 절로 가는데요. 어찌해야할지 좀 가르쳐 주시면.. 고맙겠는데요..
S := String(Value);
mjv := 1;
mnv := Pos('.',S) + 1;
Rev := Pos('.',Copy(S, mnv, Length(S))) + mnv;
Build := Pos('.',Copy(S, Rev, Length(S))) + Rev;
// Build version string, this puts a 0 in front of the minor version
// if the minor version is < 10;
//If ((Rev - mnv) <= 2) Then
If ((Rev - mnv) <= 2) Then
mvs := Copy(S,mjv,mnv-1) + '0' + S[mnv]
Else
mvs := Copy(S,mjv,Rev-2);
Result := 'Version ' + mvs +
', Release ' + Copy(S,Rev,Length(S)) + Char(10) + Date;
Except
Result := 'Version ' + String(Value) + char(10) + Date;
End;
End
Else
Result := 'Version unknown, ' + Date;
FreeMem(Buf,n);
End
Else
Result := 'Version unknown, ' + Date;
END;
Project/Project Options메뉴의 Version Info탭에서 Include Version Infomation in Project를 체크해
서 버전정보를 포함하도록해야 하구요... 중간쯤에 보시면 Language란 박스에 Locale ID와 언어설정이
되어 있을겁니다. 그걸 가지고 버전정보를 얻어야 합니다.
> If VerQueryValue(Buf,PChar('StringFileInfo