그렇군요.
무언가 잘 맞지 않는다는 느낌이 맞았군요...
아무튼, 답변 고맙습니다.
좋은 하루 되십시오.
박지훈.임프 님이 쓰신 글 :
: 버전이 달라서 그럴 겁니다.
: 이미 보셨겠지만, 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와의 차이로 인한것인지, 그렇다면 어떻게 해결해야 하는지 알고 싶습니다.
: :
: : 아시는분들 좀 가르쳐 주세요.
|