#include "dbase.h" int dbDatabase::FieldGet(unsigned int tbHandle, int recno, unsigned int field, Value& result) { ArrayMap &fs = fields[tbHandle]; lseek(fhandle, (int)tables[tbHandle].offset+tables[tbHandle].tableHead+(tables[tbHandle].recordLenght*(recno-1))+fs[field].prevLength+1, 0); if(fs[field].format == MTDB_STR) { String::Buffer buff(fs[field].length+1); read(fhandle, buff, fs[field].length); buff[fs[field].length] = 0; String s = buff; s.Trim(s.Find('\0')); result = s; return MTDB_SUCCESS; } else if(fs[field].format >= 0x0100 && fs[field].format <= 0x02ff) { unsigned int jumpPointer, dataSize; read(fhandle, &jumpPointer, 4); if(jumpPointer == 0) { String::Buffer buff(0); result = (String)buff; return MTDB_SUCCESS; } else { Buffer b(1); lseek(fhandle, jumpPointer+eodsp-5, 0); read(fhandle, b, 1); if(b[0] == MTDB_TB_RECORD_ENABLED) { read(fhandle, &dataSize, 4); String::Buffer buff(dataSize); read(fhandle, buff, dataSize); if(fs[field].format == MTDB_MEMOASC) { result = (String)buff; } else result = (String)buff; return MTDB_SUCCESS; } return MTDB_REC_DELETED; } } else if(fs[field].format == MTDB_INT) { Buffer res1(1); read(fhandle, res1, sizeof(int)); result = (int)*res1; return MTDB_SUCCESS; } else if(fs[field].format == MTDB_DOUBLE){ Buffer res2(1); read(fhandle, res2, sizeof(double)); result = (double)*res2; return MTDB_SUCCESS; } else if(fs[field].format == MTDB_BOOL) { Buffer res4(1); read(fhandle, res4, sizeof(bool)); result = (bool)*res4; return MTDB_SUCCESS; } else if(fs[field].format == MTDB_DATETIME) { Buffer