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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[591] 동적으로 BDE Alias 생성하기
박지훈.임프 [cbuilder] 12634 읽음    2006-04-05 02:55
BDE를 사용한 애플리케이션을 만들어서 배포하려면, BDE를 이용한 개발에서 사용했던 알리아스를 배포 대상 피씨에도 똑같이 생성해주어야 합니다. 물론 인스톨실드같은 설치프로그램에서 지원해주기도 하지만 때로는 인스톨실드를 쓰지 않고 실행파일만 배포하는 경우도 있고 하기 때문에, 애플리케이션에서 알리아스를 생성해주어야 할 수도 있습니다.

다음은 하영재님이 델파이코리아에 올리신 소스입니다. 델파이에서 동적으로 BDE 알리아스를 생성하는 함수입니다.

uses BDE;

procedure AddBDEAlias(sAliasName, sAliasPath, sDBDriver: string);
var
  h: hDBISes;
begin;
  DbiInit(nil);
  DbiStartSession('dummy', h, '');
  DbiAddAlias(nil, PChar(sAliasName), PChar(sDBDriver), PChar('PATH:' + sAliasPath), true);
  DbiCloseSession(h);
  DbiExit;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  AddBDEAlias('TestDB','C:\Temp', 'DBASE' );
end;


그리고 다음은, 위의 델파이 소스를 그대로 C++로 바꾼 것입니다.

#include 

void AddBDEAlias(AnsiString sAliasName, AnsiString sAliasPath, AnsiString sDBDriver)
{
    hDBISes h;
    DbiInit(NULL);
    DbiStartSession("dummy", h, "");
    DbiAddAlias(NULL, sAliasName.c_str(), sDBDriver.c_str(), ("PATH:" + sAliasPath).c_str(), true);
    DbiCloseSession(h);
    DbiExit;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    AddBDEAlias("ImpTestDB","C:\\Temp", "DBASE");
}
장보 [compage]   2006-04-05 12:04 X
BDE 컴포넌트를 폼에 올려놓은 상태라면 Session이라는 기본 변수(?)를 사용하여 알리아스를 생성할 수도 있습니다.

s:= TStringList.Create;
s.Clear;
s.Values['PATH']:= PATH;
s.Values['ENABLE BCD']:= 'FALSE';
s.Values['DEFAULT DRIVER']:= 'PARADOX';

Session.AddAlias(AliasName, 'STANDARD', s);
박지훈.임프 [cbuilder]   2006-04-05 13:51 X
넵 맞습니다.
TSession 컴포넌트도 내부적으로는 위의 함수와 같은 코드로 동작합니다.

+ -

관련 글 리스트
591 동적으로 BDE Alias 생성하기 박지훈.임프 12634 2006/04/05
(링크)     Delphi Tip'N Tricks > 동적으로 BDE Alias 생성하기
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.