Q&A

  • 실행파일의 현재버젼을 알아내고, 그 버젼을 등록하는것 좀 갈켜주세요..
여기서 아래소스 자료(버젼관리)를 얻었습니다.

그러나 버젼을 얻어 오지 못하고 있습니다. 내가 이실행파일의 버젼을 등록하지 않아서 그런건지 아니면 내가 뭘 잘못한건지 에러는 안뜨는데 버젼을 볼수가 없어서요. 고수님들 부탁드립니다. (궁금한 부분은 제가 소스에 체크해 놓았습니다.)

이 것이 잘못되었다면 현재의 버젼 등록하는 방법과 버젼보는 방법좀 가르쳐 주세요

버젼을 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('StringFileInfo40904E4FileVersion'),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;







1  COMMENTS
  • Profile
    최용일 2001.12.07 19:10
    안녕하세요. 최용일입니다.



    Project/Project Options메뉴의 Version Info탭에서 Include Version Infomation in Project를 체크해



    서 버전정보를 포함하도록해야 하구요... 중간쯤에 보시면 Language란 박스에 Locale ID와 언어설정이



    되어 있을겁니다. 그걸 가지고 버전정보를 얻어야 합니다.



    > If VerQueryValue(Buf,PChar('StringFileInfo