diff --git a/include/real.cpp b/include/real.cpp index b1602508e..7eafb491a 100755 --- a/include/real.cpp +++ b/include/real.cpp @@ -1728,6 +1728,17 @@ void TGeneric_distrib::init ( } } +void TGeneric_distrib::copy(const TGeneric_distrib & d) +{ + _tot = d._tot; + _totslices = d._totslices; + _ready = d._ready; + _slices = d._slices; + _current = d._current; + _decs = d._decs; +} + + /////////////////////////////////////////////////////////// // Importo /////////////////////////////////////////////////////////// diff --git a/include/real.h b/include/real.h index 3a67778cf..a4883ee4c 100755 --- a/include/real.h +++ b/include/real.h @@ -429,11 +429,15 @@ public: { _decs = decs;} // @cmember Inizializza l'oggetto - void init(const real& r, bool zap = FALSE); + void init(const real& r, bool zap = false); + // @cmember Copia di un TGeneric_distrib + void copy(const TGeneric_distrib & d); + + // @cmember Assegnamento di un TGeneric_distrib + TGeneric_distrib & operator = (const TGeneric_distrib & d) { copy(d); return *this; } // @cmember Assegnamento di un importo - void operator =(const real& r) - { init(r); } + void operator =(const real& r) { init(r); } // @cmember Ritorna l'ultima percentuale aggiunta const real& last_slice() const { @@ -442,7 +446,9 @@ public: } // @cmember Costruttore - TGeneric_distrib(const real& r,int round=0) : _tot(r), _totslices(0.0), _ready(FALSE), _slices(4), _current(0),_decs(round) + TGeneric_distrib(const TGeneric_distrib & d) { copy(d); } + // @cmember Costruttore + TGeneric_distrib(const real& r = ZERO, int round = 0) : _tot(r), _totslices(0.0), _ready(FALSE), _slices(4), _current(0),_decs(round) {} // @cmember Distruttore virtual ~TGeneric_distrib() diff --git a/include/recarray.cpp b/include/recarray.cpp index 3f37e8b51..7eda12f46 100755 --- a/include/recarray.cpp +++ b/include/recarray.cpp @@ -537,7 +537,7 @@ void TFile_cache::init_file(TLocalisamfile* f) int logicnum = atoi(_filecode); if (logicnum == 0) { - if (_filecode == '&') + if (_filecode[0] == '&' || _filecode.len() >= 5) _file = new TModule_table(_filecode); else _file = new TTable(_filecode); @@ -623,7 +623,8 @@ const TObject& TFile_cache::query(const char* code) test_firm(); TObject* obj = _cache.objptr(_code); - if (obj == NULL) + + if (obj == NULL) { TLocalisamfile& f = file(); TRectype& curr = f.curr(); @@ -641,7 +642,7 @@ const TObject& TFile_cache::query(const char* code) else curr.zero(rf.Name); } - f.setkey(_key); + f.setkey(_key); _error = f.read(); } else _error = _iskeyerr; diff --git a/include/recarray.h b/include/recarray.h index 8ed3a95b8..a23695fb8 100755 --- a/include/recarray.h +++ b/include/recarray.h @@ -153,7 +153,7 @@ class TFile_cache : public TObject static unsigned long _hits, _misses; TToken_string _code; - TString4 _filecode; // Codice tabella es: %STA, &AUT + TString8 _filecode; // Codice tabella es: %STA, &AUT, LVCAU TLocalisamfile* _file; int _key; long _last_firm, _limit;