diff --git a/include/alleg.h b/include/alleg.h index 1ae134bc4..d4879fd2a 100755 --- a/include/alleg.h +++ b/include/alleg.h @@ -17,7 +17,6 @@ DEFFLD(NUMREG) // Can be null // Flags DEFFLD(IGNORA) -DEFFLD(CONTRATTO) // Content fields DEFFLD(DATAREG) @@ -26,7 +25,12 @@ DEFFLD(IMPORTO) DEFFLD(IMPOSTA) DEFFLD(NATOPE) DEFFLD(TIPOPE) -DEFFLD(TOTALE) + +DEFFLD(CONTRATTO) +DEFFLD(IMPORTOTOT) +DEFFLD(IMPOSTATOT) + +DEFFLD(NUMRETT) #undef DEFFLD diff --git a/include/recarray.cpp b/include/recarray.cpp index f361d373a..47ab792af 100755 --- a/include/recarray.cpp +++ b/include/recarray.cpp @@ -20,7 +20,10 @@ TFast_isamfile::TFast_isamfile(int logicnum) : TIsamfile(logicnum) } TFast_isamfile::~TFast_isamfile() -{ close(); } +{ + close(); + // prefix().close_closeable_isamfiles(); // Non strettamente necessario +} /////////////////////////////////////////////////////////// // TRecord_Array @@ -58,7 +61,7 @@ TRecord_array::TRecord_array(const char* keytok, int logicnum, int first) if (keytok && *keytok) // La stringa chiave non e' vuota { const TToken_string key(keytok); - TString80 val; // Un campo chiave non puo' mai superare i 50 + TString80 val; // Un campo chiave non puo' mai superare i 70 (4->S0) for (int i = 0; i < kd.NkFields-1; i++) // Riempio "quasi" tutta la chiave primaria { const int nPos = kd.FieldSeq[i] % MaxFields; // Posizione del campo i della chiave @@ -88,7 +91,7 @@ void TRecord_array::set_key(TRectype* r) const KeyDes& kd = recd.Ky[0]; // Elenco dei campi della chiave 1 // Copia tutti i campi chiave, tranne l'ultimo, in tutti i records - TString val; + TString80 val; for (int i = kd.NkFields-2; i >= 0; i--) { const int nf = kd.FieldSeq[i] % MaxFields; @@ -104,7 +107,6 @@ const TRectype& TRecord_array::key() const { const TRectype* r = (const TRectype*)_data.objptr(0); CHECK(r != NULL, "TRecord_array lost its key"); - return *r; } @@ -179,13 +181,16 @@ bool TRecord_array::renum_key(const char* field, long num) void TRecord_array::sort(COMPARE_FUNCTION sort_func) { - TObject * rec = _data.remove(0); // salva chiave + TObject * rec = _data.remove(0); // salva chiave - _data.sort(sort_func); // ordina - _data.insert(rec,0); // ripristina chiave + _data.sort(sort_func); // ordina + _data.insert(rec,0); // ripristina chiave TString16 n; for (int i = _data.last(); i > 0; i--) - row(i, false).renum_key(_num, n.format("%d", i)); // Rinumera + { + n.cut(0) << i; + row(i, false).renum_key(_num, n); // Rinumera + } } int TRecord_array::rec2row(const TRectype& r) const @@ -207,9 +212,8 @@ int TRecord_array::insert_row(TRectype* r) TString16 n; for (int f = _data.last(); f > nr; f = _data.pred(f)) { - TRectype& rec = row(f, FALSE); - - n.format("%ld", (long)_offset + f); + TRectype& rec = row(f, false); + n.cut(0) << long(_offset + f); rec.renum_key(_num, n); } } @@ -234,12 +238,13 @@ void TRecord_array::pack() { _data.pack(); + TString16 n; for (int i = _data.last(); i > 0; i--) { TRectype* r = (TRectype*)_data.objptr(i); if (r != NULL) { - TString16 n; n << i+_offset; + n.cut(0) << long(i+_offset); r->renum_key(_num, n); } } @@ -266,12 +271,13 @@ bool TRecord_array::destroy_row( if (ok && pack) { + TString16 n; for (int i = _data.size()-1; i >= index; i--) { TRectype* r = (TRectype*)_data.objptr(i); if (r != NULL) { - TString16 n; n << i+_offset; + n.cut(0) << long(i+_offset); r->renum_key(_num, n); } }