diff --git a/GdataTable.cpp b/GdataTable.cpp index 2c9781d..5b8db76 100644 --- a/GdataTable.cpp +++ b/GdataTable.cpp @@ -271,9 +271,9 @@ int GdataTable::nRow() case(Tint64): return((Cgarray<__int64>*)buf[i])->n; case(Tstring): - return((Cgarray*)buf[i])->n; + return((Cgarray*)buf[i])->n/ colm[i].nb; case(Tbin): - return((Cgarray*)buf[i])->n; + return((Cgarray*)buf[i])->n / colm[i].nb; default: break; } diff --git a/ManagerDbfGdataTable.cpp b/ManagerDbfGdataTable.cpp index c38f508..14210dc 100644 --- a/ManagerDbfGdataTable.cpp +++ b/ManagerDbfGdataTable.cpp @@ -105,7 +105,7 @@ bool ManagerDbfGdataTable::DbfSetColm( char* name, BYTE type, int size ) switch(type) { case(DBF_TYPE_DATA_STR): - //size++; + size++; t = GdataTable::Tstring; break; case(DBF_TYPE_DATA_I64): @@ -208,6 +208,7 @@ bool ManagerDbfGdataTable::DbfGetColm(int icolm, char* name, BYTE *type, int *si //pilla tipo---------------------- static BYTE t[GdataTable::Tntip]={0,DBF_TYPE_DATA_BOOL,DBF_TYPE_DATA_I, DBF_TYPE_DATA_D,DBF_TYPE_DATA_I64, DBF_TYPE_DATA_STR, DBF_TYPE_DATA_BIN } ; *type = t[_dt->getType(icolm)]; + *ndecimal = MAX_NDECIMALS; //copia segura de nombre------------------ int i =0; @@ -220,6 +221,8 @@ bool ManagerDbfGdataTable::DbfGetColm(int icolm, char* name, BYTE *type, int *si } name[i]=0; *size = _dt->getSizeASCII(icolm); + if (_dt->getType(icolm) == GdataTable::Tstring) + *size = *size - 1; return true; } //***************************************************************************