diff --git a/include/array.cpp b/include/array.cpp index a66b63f9c..4c9ed1f09 100755 --- a/include/array.cpp +++ b/include/array.cpp @@ -584,7 +584,7 @@ bool TPointer_array::destroy( return TArray::destroy(index, pack); } -TPointer_array& TPointer_array::operator= (const TArray& a) +TPointer_array& TPointer_array::operator=(const TArray& a) { destroy(); if (size() < a.size()) @@ -598,7 +598,8 @@ TPointer_array& TPointer_array::operator= (const TArray& a) int TPointer_array::add(TObject* object, int index) { - remove(index); + if (index >= 0) + remove(index); return TArray::add(object, index); } @@ -618,7 +619,8 @@ int TPointer_array::insert(const TObject& object, int index, bool force) TBit_array::TBit_array(long size) : _bit(NULL), _size(0) { - if (size) resize(index(size)); + if (size) + resize(index(size)); } // @doc EXTERNAL diff --git a/include/array.h b/include/array.h index dfa35eae0..74b2a2829 100755 --- a/include/array.h +++ b/include/array.h @@ -216,7 +216,8 @@ public: virtual TPointer_array& operator= (const TArray& a); long get_long(int index) const { return (long)objptr(index); } - int add_long(long value, int index) { return add((TObject*)value, index); } + int add_long(long value, int index = -1) { return add((TObject*)value, index); } + int insert_long(long value, int index = -1) { return TArray::insert((TObject*)value, index, TRUE); } TPointer_array() { } TPointer_array(int size) : TArray(size) { } diff --git a/include/browfile.h b/include/browfile.h index 67abe58b8..db0fb03c9 100755 --- a/include/browfile.h +++ b/include/browfile.h @@ -25,7 +25,7 @@ class TBrowsefile_field : public TOperable_field short _dlg; WINDOW _parent; - TString_array _background; // Background per usi diversi da anterpima! + TString_array _background; // Background per usi diversi da anteprima! protected: virtual word class_id() const; @@ -36,6 +36,7 @@ protected: public: TViswin* vis_win() const { return _viswin; } + void set_vis_win(TViswin* viswin); void add_line(const char* l); long set_text(const char* file, const char* line = NULL); diff --git a/include/confapp.cpp b/include/confapp.cpp index 2dd73c5d7..9e27e5b37 100755 --- a/include/confapp.cpp +++ b/include/confapp.cpp @@ -97,7 +97,7 @@ void TConfig_application::load_mask() const TFieldref* fr = f.field(); const char* fname = fr->name(); const int index = fr->to(); - TString& oldvl = _cnf->get(fname,NULL, index > -1 ? index : -1); + const TString& oldvl = _cnf->get(fname,NULL, index > -1 ? index : -1); f.set(oldvl); } } diff --git a/include/config.cpp b/include/config.cpp index 0a1e06705..7f2d9acfa 100755 --- a/include/config.cpp +++ b/include/config.cpp @@ -100,8 +100,9 @@ void TConfig::_write_file() { if (_write_protected) return; - - ifstream in(_file); + + ifstream in(_file, ios::in, filebuf::sh_read); + TFilename temp; temp.temp("cnf"); ofstream out(temp); @@ -230,7 +231,7 @@ void TConfig::remove_all() // @rdesc Ritorna la stringa contenuta nella variabile, se questa esiste, altrimenti // il valore di default che dovrebbe assumere determinato dal parametro //
-TString& TConfig::get(
+const TString& TConfig::get(
const char* var, // @parm Variabile della quale ritornare il valore
const char* section, // @parm Sezione della varaibile (default NULL)
int index, // @parm Eventuale indice della varaibailie (default -1)
@@ -245,8 +246,8 @@ TString& TConfig::get(
{
if (section) // Cambia paragrafo se necessario
set_paragraph(section);
-
- TString* val;
+
+ const TString* val;
if (index >= 0)
{
TString v(80);
@@ -256,10 +257,15 @@ TString& TConfig::get(
else
val = (TString*)_data.objptr(var);
- if (val == NULL) // Se non la trova inserisci il default
- {
- set(var, def, section, TRUE, index);
- val = &get(var, NULL, index);
+ if (val == NULL) // Se non la trova inserisci il default
+ {
+ if (def && *def)
+ {
+ set(var, def, section, TRUE, index);
+ val = &get(var, NULL, index);
+ }
+ else
+ val = &EMPTY_STRING;
}
return *val;
@@ -289,7 +295,7 @@ long TConfig::get_long(
const char* n = get(var,section,index);
if (*n)
def = atol(n);
- else
+ else if (def != 0)
{
TString16 d; d << def;
set(var, d, section, TRUE, index);
@@ -322,7 +328,7 @@ char TConfig::get_char(
const char* n = get(var,section,index);
if (*n)
def = *n;
- else
+ else if (!isspace(def))
{
const char d[2] = { def, '\0' };
set(var, d, section, TRUE, index);
@@ -380,7 +386,8 @@ bool TConfig::get_bool(
//