Aggiunta funzione insert_row ai record_array

git-svn-id: svn://10.65.10.50/trunk@2812 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1996-05-14 10:17:34 +00:00
parent 4796306755
commit 9fe1e240a7
2 changed files with 31 additions and 4 deletions

View File

@ -1015,7 +1015,7 @@ bool TCursor::ok() const
kt.ltrim(3);
}
if (key < kf || (kt.not_empty() && kt < key.left(kt.len())))
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 ((_filterfunction ? _filterfunction(_if) : TRUE ) &&
@ -1870,7 +1870,8 @@ bool TRecord_array::renum_key(
// @syntax bool renum_key(const char* field, const TString& num);
// @syntax bool renum_key(const char* field, long num);
{
{
CHECKS(_num != field, "You can't renumber field ", field);
const TString& curr = key().get(field);
if (curr == num)
return FALSE;
@ -1901,6 +1902,26 @@ int TRecord_array::rec2row(const TRectype& r) const
return n;
}
int TRecord_array::insert_row(TRectype* r)
{
const int nr = rec2row(*r);
CHECK(nr, "You cannot insert a new key");
const bool shift = exist(nr);
insert(r, nr);
if (shift) // Se ho cambiato il record campione
{ // e ci sono altre righe ...
for (int f = last(); f > nr; f--)
{
char n[16];
TRectype & rec = row(f, FALSE);
sprintf(n, "%ld", (long)_offset + f);
rec.put(_num, n);
}
}
return nr;
}
int TRecord_array::add_row(TRectype* r)
{
const int nr = rec2row(*r);

View File

@ -269,10 +269,16 @@ public:
bool exist(int r) const;
// @cmember Ritorna la riga <p r>
TRectype& row(int r, bool create);
// @cmember Inserisce una riga alla posizione indicata nel record, sposta gli altri elementi se la poszione era gia' occupata
virtual int insert_row(TRectype* r);
// @cmember Inserisce una riga alla posizione indicata nel record, sposta gli altri elementi se la poszione era gia' occupata
int insert_row(const TRectype& r)
{ return insert_row((TRectype*)r.dup()); }
// @cmember Aggiunge/sostituisce una riga
// @cmember Aggiunge/sostituisce una riga alla posizione indicata nel record
virtual int add_row(TRectype* r);
// @cmember Aggiunge un nuovo record all'array
// @cmember Aggiunge/sostituisce una riga alla posizione indicata nel record
int add_row(const TRectype& r)
{ return add_row((TRectype*)r.dup()); }
// @cmember Cancella una riga identificata da <p n>