Modificato isam

git-svn-id: svn://10.65.10.50/trunk@3672 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1996-09-26 15:28:04 +00:00
parent 7a3e6da413
commit 837d492680
5 changed files with 635 additions and 1420 deletions

File diff suppressed because it is too large Load Diff

View File

@ -121,18 +121,6 @@ extern "C" {
/* @(:) 2.3.01.144 */
void zerordes(RecDes *);
word setrdes(RecDes *);
int findfld(RecDes *,char *);
unsigned int CFieldSize(char *, RecDes *);
unsigned int CFieldDec(char *, RecDes *);
int CFieldType(char *, RecDes *);
int CGetField(char *, RecDes *, RecType, void *);
int CPutField(char *, RecDes *, void *, RecType);
int CGetFieldBuff(char *, RecDes *, RecType, char *);
int CPutFieldBuff(char *, RecDes *, char *, RecType);
int CZeroField(char *, RecDes *, RecType);
void CZeroRec(RecDes *, RecType);
int CBuildKey(RecDes *,int ,RecType, char *);
int CCalcLenKey(RecDes *,int);
char *CGetPref(void);
void CPutPref(char *);
char *CAddPref(char *);
@ -140,11 +128,6 @@ extern "C" {
char *CInsPref(char *, int);
/* @(:) 2.3.01.144 */
char *CGetIdxName(char *);
/* @(!) 2.3.01.155 */
char **getlinesdf(char *, int *);
void loadrfd(RecDes *, RecType, char **, char **);
void dumprfd(RecDes *, RecType, char **, int *, int *, int *, char *);
/* @(:) 2.3.01.155 */
#ifdef __cplusplus
};

View File

@ -1025,7 +1025,7 @@ bool TCursor::ok() const
if (key < (const char *) kf || (kt.not_empty() && kt < (const char *) key.left(kt.len())))
return FALSE;
if (_filter_update || _filterfunction_update) _if->update();
if (update_relation()) _if->update();
if ((_filterfunction ? _filterfunction(_if) : TRUE ) &&
(_fexpr ? __evalcondition(*_if, _fexpr) : TRUE))
return TRUE;
@ -2001,7 +2001,7 @@ bool TRecord_array::destroy_row(
if (ok && pack)
{
for (int i = size()-1; i > index; i--)
for (int i = size()-1; i >= index; i--)
{
TRectype* r = (TRectype*)objptr(i);
if (r != NULL)

View File

@ -33,7 +33,7 @@ class TRelation : public TObject
// @cmember:(INTERNAL) Array di <c TRelationdef>
TArray _reldefs;
// @cmember:(INTERNAL) Codice dell'ultimo errore occorso
int _errors;
int _errors;
// @access Protected Member
protected:
@ -396,7 +396,7 @@ protected:
void filter(const char* filter, const TRectype* from = NULL, const TRectype* to = NULL);
// @cmember Indica se e' possibile fare l'update sulla relazione (se e' possibile
// sia sull'espressione-filtro che sulla funzione-filtro)
bool update_relation()
bool update_relation() const
{return (_filter_update || _filterfunction_update);}
// @access Public Member

View File

@ -53,14 +53,21 @@ int TTable::last(word lockop)
int TTable::next(word lockop)
{
const TRecnotype nrec = recno();
{
const TRecnotype nrec = recno();
/*
if (nrec != filehnd()->RecNo)
{
read();
if (bad()) return status();
if (bad())
{
if (status() == _iskeynotfound)
setstatus(NOERR);
return status();
}
}
*/
TBaseisamfile::next(lockop);
if (_tabname != (const char *)_cod)
@ -75,11 +82,21 @@ int TTable::next(word lockop)
int TTable::prev(word lockop)
{
read();
if (bad()) return status();
TRecnotype nrec = recno();
const TRecnotype nrec = recno();
/*
if (nrec != filehnd()->RecNo)
{
read();
if (bad())
{
if (status() == _iskeynotfound)
setstatus(NOERR);
return status();
}
}
*/
TBaseisamfile::prev(lockop);
if (_tabname != (const char *)_cod)
{