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와의 차이로 인한것인지, 그렇다면 어떻게 해결해야 하는지 알고 싶습니다.
아시는분들 좀 가르쳐 주세요.
|