//gemaakt in MS visual studio 2003
zit met een naar probleem met waardes die via een dll uit een database worden gehaald. Ik heb een 2x een .c en een .h waarmee ik connectie kan maken en verschillende functies kan gebruiken (bv insert en ophalen van tabellen).
waar ik nu vast loop is dat bijna alle waardes zijn getypedefd, dit zijn 2 relevante:
dit is relevante code: (waar een error wordt gegeven is aangeduid met een "<== <#>"
de errors:
1 error C2664: 'DBL_BOOL (DBL_HTABLE * ,DBL_S32)' : cannot convert parameter 1 from 'DBL_HTABLE __gc * ' to 'DBL_HTABLE * '
2 error C2664: 'void System::Data::DataRow::set_Item(int,System::Object __gc *)' : cannot convert parameter 2 from 'int' to 'System::Object __gc *'
zoals je kunt zien heeft alles te maken met de garbage collecting (__gc). De conversie van DBL_U8* naar String vond ik bij toeval, het werkte met (String *)reinterpret_cast<const char*> in een andere functie. Maar hoe moet ik de andere waardes typecasten? of misschien is t mogelijk om garbage collecting uit te zetten en alles zelf opruimen?
bij voorbaad dank als iemand hier een oplossing voor heeft!
zit met een naar probleem met waardes die via een dll uit een database worden gehaald. Ik heb een 2x een .c en een .h waarmee ik connectie kan maken en verschillende functies kan gebruiken (bv insert en ophalen van tabellen).
waar ik nu vast loop is dat bijna alle waardes zijn getypedefd, dit zijn 2 relevante:
C++:
1
2
3
| typedef unsigned char DBL_U8; typedef signed long int DBL_S32; typedef struct DBL_TABLE *DBL_HTABLE; |
dit is relevante code: (waar een error wordt gegeven is aangeduid met een "<== <#>"
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| DBL_HTABLE hTable; DataRow *dRow; DBL_U8 *tName; DBL_S32 tNumber = DBL_NextTable(0); DBL_Allow(DBL_Err_TableNotFound); while (tNumber != 0) { if (!DBL_OpenTable(&hTable, tNumber)) // <== 1 tName = (DBL_U8*)"Error"; else tName = DBL_TableName(hTable); dRow = dTable->NewRow(); dRow->Item[0] = (int)tNumber; // <== 2 dRow->Item[1] = (String *)reinterpret_cast<const char*>(tName); dTable->Rows->Add(dRow); DBL_CloseTable(hTable); tNumber = DBL_NextTable(tNumber); } DBL_CloseTable(hTable); |
de errors:
1 error C2664: 'DBL_BOOL (DBL_HTABLE * ,DBL_S32)' : cannot convert parameter 1 from 'DBL_HTABLE __gc * ' to 'DBL_HTABLE * '
2 error C2664: 'void System::Data::DataRow::set_Item(int,System::Object __gc *)' : cannot convert parameter 2 from 'int' to 'System::Object __gc *'
zoals je kunt zien heeft alles te maken met de garbage collecting (__gc). De conversie van DBL_U8* naar String vond ik bij toeval, het werkte met (String *)reinterpret_cast<const char*> in een andere functie. Maar hoe moet ik de andere waardes typecasten? of misschien is t mogelijk om garbage collecting uit te zetten en alles zelf opruimen?
bij voorbaad dank als iemand hier een oplossing voor heeft!
[ Voor 27% gewijzigd door PoweRoy op 14-03-2006 09:35 ]
[This space is for rent]