2011-03-09 6 views
7

JCL 라이브러리에는 조건부 정의 UNITVERSIONING이 있습니다. 나는 왜이 옵션이 존재하고 이것을 어떻게 사용하는지 모른다. JclUnitVersioning.pas라는 유닛이 있지만 사용할 수 없다는 것을 알고 있습니다.왜 JCL UNITVERSIONING을 사용합니까?

실제 단어 프로젝트에서 이것을 사용하려면?

답변

7

그것은 더 일관된 방법으로 이와 같은 정수를 노출하는 JclUnitVersioning 단위, 지원

{$IFDEF UNITVERSIONING} 
const 
    UnitVersioning: TUnitVersionInfo = (
    RCSfile: '$URL: https://jcl.svn.sourceforge.net/svnroot/jcl/tags/JCL-1.101- Build2725/jcl/source/common/Jcl8087.pas $'; 
    Revision: '$Revision: 1$'; 
    Date: '$Date: 12/05/2008 10:29:10$'; 
    LogPath: 'JCL\source\common' 
    ); 
{$ENDIF UNITVERSIONING} 

JclUnitVersioning 단위의 이전 버전 1] 여기에 당신에게 어떻게 작동하는지 거친 아이디어를 제공을 : 장치에는 UNITVERSIONING을 지원하는 모든 장치의 버전 정보를 다시 제공하는 글로벌 function GetUnitVersioning: TUnitVersioning;이 있습니다.

거기에서 열거하여 세부 정보를 요청할 수 있습니다.

이것은 예를 들어 .EXE에 연결된 정확한 버전의 장치를 알고 자 할 때 매우 편리합니다.

--jeroen

+0

예를 들어 고객에게 응용 프로그램의 버전을 제공하고 버그 보고서를 제출한다고 가정합니다. 어쩌면 JCL-SubcomponentX 또는 MyCustomComponents-Y의 버전이 최종 제품의 정적 링크 된 빌드 (큰 응용 프로그램)에 포함되었는지 알기를 원할 수도 있습니다. –

+0

그게 아주 도움이 보입니다. 내가 이해한다면 주어진 애플리케이션의 모든 유닛의 유닛 버전 (있는 경우)을보고 할 수있는 기능을 가질 수 있습니까? 소스 분기 포함 ... 병합 문제를 쉽게 발견 할 수 있습니다. –

+1

정확합니다. 예를 들어 5 개의 큰 응용 프로그램이있을 수 있습니다. 모두 공통 DB 계층을 공유합니다. 아마도 UberWare 3.2는 DB Layer 2.1과 함께 제공되지만 MegaSoft 2.4는 DB Layer 2.0 만 제공 할 수 있습니다. 문제 해결됨. didn''t가 이것을 알고있는 누군가를 위해, 위의 RCS 태그는 RCS와 CVS에 의해서뿐만 아니라 파괴와 같은 다른 버전 제어 시스템에 의한 체크인 시간에 자동으로 업데이트된다. –