diff --git a/include/isam.h b/include/isam.h index 9bc0dd4f2..f6502748f 100755 --- a/include/isam.h +++ b/include/isam.h @@ -354,7 +354,7 @@ protected: // @access Public Member public: // @cmember Sostituisce il record corrente del del file - void set_curr(TRectype * curr); + virtual void set_curr(TRectype * curr); // @cmember Attiva la chiave
sul file aperto
void setkey(int nkey);
// @cmember Ritorna la chiave attiva sul file aperto
diff --git a/include/relation.cpp b/include/relation.cpp
index 595514afd..0bbdf9226 100755
--- a/include/relation.cpp
+++ b/include/relation.cpp
@@ -2419,6 +2419,12 @@ bool TSortedfile::empty()
return _curs->items()==0;
}
+void TSortedfile::set_curr(TRectype * curr)
+{
+ TLocalisamfile::set_curr(curr);
+ _curs->file().set_curr(curr);
+}
+
// @mfunc Costruttore.
TSortedfile::TSortedfile(int logicnum,TRelation * rel,const char * ordexpr,const char * filter, int nkey)
:TLocalisamfile(logicnum),_rel(NULL)
@@ -2433,8 +2439,8 @@ TSortedfile::TSortedfile(int logicnum,TRelation * rel,const char * ordexpr,const
_curs = new TSorted_cursor(_rel,ordexpr,filter,nkey);
_curs->setfilter(filter,TRUE); //BUG: cursors doesn't update rel.
- if (&curr()!=&(_curs->file().curr()))
- _curs->file().set_curr(&curr());
+ if (&curr()!=&(_curs->file().curr()))
+ _curs->file().set_curr(&curr());
}
// @mfunc Distruttore
TSortedfile::~TSortedfile()
diff --git a/include/relation.h b/include/relation.h
index 1b4faac1e..3ff08894f 100755
--- a/include/relation.h
+++ b/include/relation.h
@@ -678,6 +678,8 @@ public:
virtual bool tab() const
{ return FALSE;}
+ // @cmember Sostituisce il record corrente del del file (disallocando il vecchio)
+ virtual void set_curr(TRectype * curr);
// @cmember Si posiziona sul primo record del file (vedi