From 62033526b6d7599f02f15bc705848ce25d68c816 Mon Sep 17 00:00:00 2001 From: Gerardo Date: Thu, 28 May 2020 00:21:25 +0200 Subject: [PATCH] Correccion de errores en GdataTable, en len y en conversion a dbf --- GdataTable.cpp | 4 ++-- ManagerDbfGdataTable.cpp | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/GdataTable.cpp b/GdataTable.cpp index 58d092d..bc09d98 100644 --- a/GdataTable.cpp +++ b/GdataTable.cpp @@ -269,9 +269,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 9405023..62e6725 100644 --- a/ManagerDbfGdataTable.cpp +++ b/ManagerDbfGdataTable.cpp @@ -58,7 +58,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): @@ -161,6 +161,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; @@ -173,6 +174,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; } //***************************************************************************