Aggiornato metodo renum_key dei TRecord_array

git-svn-id: svn://10.65.10.50/trunk@1256 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1995-04-18 08:40:52 +00:00
parent 191345de81
commit 9f8e74a226

@ -1,4 +1,4 @@
// $Id: relation.cpp,v 1.35 1995-04-14 12:14:56 guy Exp $
// $Id: relation.cpp,v 1.36 1995-04-18 08:40:52 guy Exp $
// relation.cpp
// fv 12/8/93
// relation class for isam files
@ -1318,6 +1318,14 @@ TRecord_array::TRecord_array(int logicnum, const char* numfield)
: _file(logicnum), _num(numfield)
{}
const TRectype& TRecord_array::key() const
{
TRectype* r = (TRectype*)objptr(0);
CHECK(r, "A TRecord_array lost its key");
return *r;
}
TRectype& TRecord_array::row(int n, bool create)
{
TRectype* r = (TRectype*)objptr(n);
@ -1333,16 +1341,25 @@ TRectype& TRecord_array::row(int n, bool create)
bool TRecord_array::renum_key(const char* field, const TString& num)
{
CHECKS(!num.blank(), "Blank key value for field: ", field);
TRectype* r = (TRectype*)objptr(0);
if (r == NULL)
{
r = new TRectype(_file);
r->zero();
add(r, 0);
}
const TString& curr = key().get(field);
CHECKS(!curr.blank() && !num.blank(), "Bad key field for record: ", field);
if (curr == num)
return FALSE;
for (int i = last(); i >= 0; i--)
{
TRectype* o = (TRectype*)objptr(i);
if (o) o->put(field, num);
r = (TRectype*)objptr(i);
if (r) r->put(field, num);
}
return TRUE;
@ -1408,7 +1425,7 @@ int TRecord_array::read(const TRectype& filter)
}
int TRecord_array::write(bool re)
{
{
int err = NOERR;
TLocalisamfile f(_file);