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

C++빌더 Q&A
C++Builder Programming Q&A
[44459] Re:Re:ADOConnetion의 GetTableNames 에 관한 질문입니다.
머슴.한석복 [han8783] 802 읽음    2006-04-12 10:44
그렇군요.
무언가 잘 맞지 않는다는 느낌이 맞았군요...
아무튼, 답변 고맙습니다.
좋은 하루 되십시오.
박지훈.임프 님이 쓰신 글 :
: 버전이 달라서 그럴 겁니다.
: 이미 보셨겠지만, BDS 2006에서는 GetTableNames가 오버로드되어 있어서 이 이름의 함수를 호출하면 두개의 함수
: 중에 하나가 선택됩니다. 그런데 애플리케이션 쪽에서 ComboBox1->Items를 보내줘서 TStrings임을 확인하기를 기대
: 하셨겠지만, VCL 5의 TStrings와 VCL 10의 TStrings는 호환이 안된다고 생각하는 것이 정상입니다. (되면 오히려 이상하죠)
:
: 어떤 편법을 동원해서 혹시라도 이게 동작을 하더라도, 다른 오동작이나 메모리 오류가 발생할 가능성이 대단히 높습니다.
: 절대로 피하셔야 합니다. VCL버전이 호환이 안되므로 VCL 클래스 타입이 아닌 기본 타입만 쓸 수 있다고 생각하셔야 하구요.
: 코드가 좀 더 복잡해지더라도 dll에서 char **를 써서 문자열의 배열 형식으로 변환해서 전달하고, 애플리케이션쪽에서
: 다시 TStrings로 변환해서 받는 수밖에 없습니다.
:
: 그건 그렇고... 회사에서 C++빌더 5 프로페셔널을 쓰신다니 참 난감하시겠네요.
: C++빌더와 델파이의 5 프로페셔널은 ADO를 지원하는 5 이상의 버전들 중에서 유일하게 ADO를 지원하지 않습니다.
: 6 버전에서는 프로에서도 ADO를 지원하거든요. 이런 문제 때문에, 볼랜드에서 5 프로페셔널을 위한 ADO 기능만의
: 업그레이드 패키지도 판매했었습니다만.. (몇십만원 정도였던걸로 기억합니다) 지금은 5 버전 자체가 단종된지 오래라서
: 그것도 구하기 어렵겠군요.
:
: 그럼...
:
:
: 머슴.한석복 님이 쓰신 글 :
: : ADOConnection->GetTableNames(TWideStrings *list, (TStrings *)(dbGetTableList());
: : 에서 TWideStrings에 집어 넣을 수 있는 클래스가 어떤 클래스 일까요?
: :
: : 질문이 뜬금 없긴 한데요.
: :
: : 제가 지금 하는게,
: :
: : BDS에서,  ADO Component 를 이용해서-> DLL을 만들어서,
: : CBuilder 5에서 사용 할려고 하는데요( 5 버젼에서는 Enterprise 이상에서만 ADOComponent가 지원
: : 되더라구요. 제거는 professional 버젼이라서...ㅡ.ㅡ)
: :
: : 분명히 BDS 로 작성한 Application에서는 이코드가
: : /////////////////////////////////
: : void GetTableList( void *list ){
: :     TStrings *NameList = (TStrings *)list;
: :     ADOConnection->GetTableNames(NameList, false);
: : }
: :
: : *[호출하는 코드는, dllGetTableList( ComboBox1->Items );] 이렇게 작성 했구요.
: : //////////////////////////////////////////////////////////////////////////////////
: : 아무 문제가 되지 않았는데요.
: :
: : 5 버젼에서는  똑같은 코드가 아래와 같은 에러가 발생 하네요.
: : 'Cannot assign a TWideStringList to a TComboBoxStrings'
: :
: : ( 분명 HELP 에서 FUNCTION PROTOTYPE에는
: : Syntax
: : [C++] void GetTableNames (TWideStrings * List, bool SystemTables);
: : [C++] void GetTableNames (TStrings * List, bool SystemTables);
: :    로 되어 있는데 말이죠..)
: :
: :
: : 그래서, 편법으로, DLL Function 내에서, TStringList를 동적으로 생성해서 그것을 return해 주는 방식으로
: : 했는데, 이게 무언가가 정상적이지 못한 방법인것 같아서 질문을 드립니다. 혹시, BDS와 Builder5와의 차이로 인한것인지, 그렇다면 어떻게 해결해야 하는지 알고 싶습니다.
: :
: : 아시는분들 좀 가르쳐 주세요.

+ -

관련 글 리스트
44443 ADOConnetion의 GetTableNames 에 관한 질문입니다. 머슴.한석복 848 2006/04/11
44448     Re:ADOConnetion의 GetTableNames 에 관한 질문입니다. 박지훈.임프 1042 2006/04/11
44459         Re:Re:ADOConnetion의 GetTableNames 에 관한 질문입니다. 머슴.한석복 802 2006/04/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.