FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[1826] Re:[질문] Firebird 2.0 사용시 IBExpress콤포의 Admin 탭이 사라지는...
박지훈.임프 [cbuilder] 3913 읽음    2006-02-21 14:25
짐작하신대로네요.
최근에 IBExpress 컴포넌트를 써보지 않아 잘 몰랐는데, 소스를 보니 IBExpress 내부에서 InterBase Admin 탭의
컴포넌트들을 레지스터하기 전에 gds32.dll의 버전을 체크하는군요.

procedure Register;
var
  IB60Client : Boolean;
begin
  IB60Client := false;
  RegisterComponents(IBPalette1, [TIBTable, TIBQuery,
    TIBStoredProc, TIBDatabase, TIBTransaction, TIBUpdateSQL,
    TIBDataSet, TIBSQL, TIBDatabaseInfo, TIBSQLMonitor, TIBEvents, TIBExtract]);
  RegisterComponents('InterBase', [TIBConnectionBroker, TIBScript, {do not localize}
    TIBSQLParser, TIBDatabaseINI]);
  try
    IB60Client := (GetGDSLibrary.GetIBClientVersion >= 6);
    if (GetGDSLibrary.TryIBLoad) and IB60Client then   // --> 이 부분이 문제!
      RegisterComponents(IBPalette2, [TIBConfigService, TIBBackupService,
        TIBRestoreService, TIBValidationService, TIBStatisticalService,
        TIBLogService, TIBSecurityService, TIBServerProperties, TIBLicensingService,
        TIBInstall, TIBUninstall]);
...
end;

IBPalette2라는 값이 "InterBase Admin"이라는 문자열입니다. 위의 코드에 따르면 GetGDSLibrary.GetIBClientVersion의
리턴값이 6 이상이 되지 않으면 InterBase Admin 컴포넌트들이 등록되지 않게 되어있네요.

실제로 이 관련 코드들을 실행해봤더니... 불행히도, 파이어버드가 이 GetIBClientVersion 함수를 그대로 쓰고 있으면서,
리턴값을 파이어버드의 버전인 2로 리턴하는군요. IB 버전이기 때문에 최소한 파이어버드가 처음 인터베이스로부터 분기
했던 6 버전으로 인식해야 하는데... 엄밀히 말하면 이건 파이어버드의 잘못에 가깝네요.

그래도 쓰려면, IBExpress 소스들에서 GetIBClientVersion 부분을 몽땅 수정해서 재컴파일할 필요가 있는데...
파이어버드임을 확인하는 직접적인 함수가 없으니 gds32.dll의 FileDescription을 Win32의 VerQueryValue() 함수로
읽어서 파이어버드인지 확인하게 해야 할 듯 합니다. GetIBClientVersion()을 호출하는 부분이 꽤 많아서 번거로운 작업이
되겠습니다만...

그럼...


조용한아찌 님이 쓰신 글 :
: 안녕하세요.
:
:   Firebird 2.0 을 설치해서 사용하보고 있는데 IBExpress 콤포넌트의 interbase Admin 파레트의 아이콘들이 사라집니다. 2.0 이하의 버전을 설치하면 다시 나타나고 아마도 델파이 실행시 windows\system32 의 gds32.dll 파일에 내용을 확인하는 것 같은데...
:   현재 fbclient.dll 파일을 gds32.dll 로 카피하여 사용하고 있고요.
:   주로 backup 과 restore 시 interbase admin 의 콤포넌트를 사용합니다.
:
:   혹시 이 부분에 대해 아시는 내용이 있으면 알려주시면 고맙겠습니다.

+ -

관련 글 리스트
1806 [질문] Firebird 2.0 사용시 IBExpress콤포의 Admin 탭이 사라지는... 조용한아찌 1996 2006/02/15
1826     Re:[질문] Firebird 2.0 사용시 IBExpress콤포의 Admin 탭이 사라지는... 박지훈.임프 3913 2006/02/21
1827         Re: 감사드립니다. 조용한아찌 1833 2006/02/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.