Patch level : 10.0 200

Files correlati     : ba1.exe
Ricompilazione Demo : [ ]
Commento            :
0001036: installazione cd patch 180
Installando ex novo ed indicando una società esistente di dati su una cartella diversa viene segnalato l'errore ba1.exe in fase di conversione archivi, richiamando da manutenzione archivi la conversione vengono generati gli errori allegati. Nell'area ftp di Aga, cartella Ilaria allego l'area dati SIDA per il test.


git-svn-id: svn://10.65.10.50/trunk@17971 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2008-12-23 09:05:22 +00:00
parent d22c4e852f
commit 2a3e35827d
10 changed files with 66 additions and 100 deletions

View File

@ -128,6 +128,10 @@ TInfo_mask::TInfo_mask()
add_row(TR("Ragione Sociale"), f.ragione_sociale()); add_row(TR("Ragione Sociale"), f.ragione_sociale());
add_row(TR("Valuta"), f.codice_valuta()); add_row(TR("Valuta"), f.codice_valuta());
} }
else
{
add_row(TR("Ragione Sociale"), campoini.get("Company"));
}
add_row(TR("Programma"), arg); add_row(TR("Programma"), arg);
add_row(TR("Config locale"), campoini.name(), campoini.name().find(' ') >= 0); add_row(TR("Config locale"), campoini.name(), campoini.name().find(' ') >= 0);

View File

@ -1054,10 +1054,7 @@ const char* TControl::parse_caption(const char* cap, bool& bold, bool& big, COLO
else else
{ {
int r = 0, g = 0, b = 0; int r = 0, g = 0, b = 0;
sscanf(t, "%d,%d,%d", &r, &g, &b); if (sscanf(t, "%d,%d,%d", &r, &g, &b) == 3)
if (r == 0 && g == 0 && b == 0)
color = COLOR_BLACK;
else
color = XVT_MAKE_COLOR(r, g, b); color = XVT_MAKE_COLOR(r, g, b);
} }
while (*t && *t != ']') t++; while (*t && *t != ']') t++;
@ -1111,8 +1108,7 @@ bool TControl::is_edit_key(KEY k) const
bool TControl::event_handler(XI_OBJ* itf, XI_EVENT* xiev) bool TControl::event_handler(XI_OBJ* itf, XI_EVENT* xiev)
{ {
bool ok = true; return true;
return ok;
} }
void TControl::change_attrib(unsigned long mask, bool on, XI_OBJ* obj) void TControl::change_attrib(unsigned long mask, bool on, XI_OBJ* obj)
@ -1123,28 +1119,7 @@ void TControl::change_attrib(unsigned long mask, bool on, XI_OBJ* obj)
if (on) attr |= mask; if (on) attr |= mask;
else attr &= ~mask; else attr &= ~mask;
if (attr != old_attr) // C'e' un vero cambiamento d'attributo if (attr != old_attr) // C'e' un vero cambiamento d'attributo
{
/*
#ifndef XI_R4
// Se la finestra e' chiusa e il campo e un bottone o e' editabile allora cambia l'attributo
// senza ridisegnare il campo, il che provocherebbe problemi di funzionamento degli sheet
if (_obj->type == XIT_BTN || _obj->type == XIT_FIELD)
{
const TWindow* w = (const TWindow*)_obj->itf->app_data;
if (!w->is_open())
{
if (_obj->type == XIT_FIELD)
((STX_DATA*)_obj->v.field->stx)->attrib = attr;
else
_obj->v.btn->attrib = attr;
return;
}
}
#endif
*/
// Usa tranquillamente il metodo ortodosso
xi_set_attrib(obj, attr); xi_set_attrib(obj, attr);
}
} }
// @doc INTERNAL // @doc INTERNAL

View File

@ -383,45 +383,33 @@ bool get_tabapp(const char * tabname, TString& app)
// @doc INTERNAL // @doc INTERNAL
// @func Ritorna una Token_string con in nome dell'indice // @func Ritorna una Token_string con in nome dell'indice
void get_idx_names( int get_table_names(
int logicnum, // @parm Numero logico del file di cui riconoscere l'indice int logicnum, // @parm Numero logico del file di cui riconoscere l'indice
TToken_string& i_names) // @parm Token_string in cui inserire il nome dell'indice TToken_string& i_names, // @parm Token_string in cui inserire il nome dell'indice
int mode)
// @comm Ritorna il nome con il prefisso corrente // @comm Ritorna il nome con il prefisso corrente
{ {
const long c = DB_getconf();
CHECKD(c & 1, "Bad index file format ", c);
TFilename f = prefix().get_filename(logicnum); TFilename f = prefix().get_filename(logicnum);
/*
if (c & 1) f.ext("cdx");
if (c & 4) f.ext("mdx");
i_names.cut(0); i_names.cut(0);
i_names.add(f);
f.ext(""); if (mode & 1)
f.rtrim(1); i_names = f;
if ((c & 2) || (c & 8)) // DBIII or CLIPPER format, returns f_name + .cgp, f_nameX + .n{d|t}x
if (mode & 2)
{ {
TTrec r; f.ext("cdx");
r.get(logicnum); i_names.add(f);
for (int j=1; j<=r.keys();j++)
{
TString xx=f.name();
if (xx.len()<8)
f << ('0' + j);
else
f[8] = ('0' + j);
if (c & 2) // CLIPPER
f.ext("ndx");
else // DBIII
f.ext("ntx");
i_names.add(f);
}
} }
i_names.restart();
*/ if (mode & 4)
f.ext("cdx"); {
i_names = f; f.ext("fpt");
if (f.exist())
i_names.add(f);
}
return i_names.items();
} }
// Converte un errore di codebase in un errore isam // Converte un errore di codebase in un errore isam
@ -484,18 +472,17 @@ HIDDEN int error_codes_rb[] = {-1,-1,_isreinsert,-1,-1,_islocked,-1,_isalropen,_
} }
// Used also by varrec // Used also by varrec
bool rec_has_memo(const RecDes* rd) bool rec_has_memo(const RecDes& rd)
{ {
CHECKD(rd->NFields <= MaxFields, "Tracciato con troppi campi ", rd->NFields); for( int i = rd.NFields - 1; i >= 0; i--)
for( int i = rd->NFields - 1; i >= 0; i--) if (rd.Fd[i].TypeF == _memofld)
if (rd->Fd[i].TypeF == _memofld) return true;
return TRUE; return false;
return FALSE;
} }
HIDDEN bool lf_has_memo(int lffile) HIDDEN bool lf_has_memo(int lffile)
{ {
return rec_has_memo(&prefix().get_recdes(lffile)); return rec_has_memo(prefix().get_recdes(lffile));
} }
HIDDEN void browse_null(char *start, int nc) HIDDEN void browse_null(char *start, int nc)
@ -2137,11 +2124,7 @@ int TSystemisamfile::update(
TString s(256); s << TR("Aggiornamento") << ' ' << fname; TString s(256); s << TR("Aggiornamento") << ' ' << fname;
const TRecnotype nitems = items(); const TRecnotype nitems = items();
#ifdef DBG TProgind p(nitems > 0 ? nitems : 1, s, is_power_station(), true);
TProgind p(nitems > 0 ? nitems : 1, s, true, true);
#else
TProgind p(nitems > 0 ? nitems : 1, s, false, true);
#endif
TExtrectype nrec(wrec); TExtrectype nrec(wrec);
@ -2155,7 +2138,7 @@ int TSystemisamfile::update(
if (nrec.exist(fld_name)) if (nrec.exist(fld_name))
outfld.add(new TRecfield(nrec, fld_name), j); outfld.add(new TRecfield(nrec, fld_name), j);
} }
const bool memo_inside = rec_has_memo(nrec.rec_des());
for (int errore = first(); errore == NOERR; errore = next()) for (int errore = first(); errore == NOERR; errore = next())
{ {
if (!p.addstatus(1)) if (!p.addstatus(1))
@ -2196,7 +2179,7 @@ int TSystemisamfile::update(
browse_null(nrec.string(),lenr); browse_null(nrec.string(),lenr);
memcpy(DB_getrecord(fhnd),nrec.string(),lenr); memcpy(DB_getrecord(fhnd),nrec.string(),lenr);
err=DB_add(fhnd); err=DB_add(fhnd);
if ( err == NOERR && nrec.has_memo()) if ( err == NOERR && memo_inside)
nrec.write_memo(ishandle, DB_recno(fhnd)); nrec.write_memo(ishandle, DB_recno(fhnd));
if (err != NOERR) if (err != NOERR)
err=get_error(err); err=get_error(err);
@ -2879,7 +2862,7 @@ int TSystemisamfile::dump(
TRecnotype i = 0; TRecnotype i = 0;
const TRecnotype nitems = items(); const TRecnotype nitems = items();
s.format(FR("Esportazione archivio %s"), filename()); s.format(FR("Esportazione %s"), filename());
TProgind p(nitems, s, TRUE, TRUE, 70); TProgind p(nitems, s, TRUE, TRUE, 70);
TString s1, sfld; TString s1, sfld;
@ -3087,7 +3070,7 @@ int TSystemisamfile::dump(
TRecnotype i = 0; TRecnotype i = 0;
const TRecnotype nitems = items(); const TRecnotype nitems = items();
s.format(FR("Esportazione archivio %s"), filename()); s.format(FR("Esportazione %s"), filename());
TProgind p(nitems, s, TRUE, TRUE, 70); TProgind p(nitems, s, TRUE, TRUE, 70);
TString s1, sfld; TString s1, sfld;
@ -3356,16 +3339,15 @@ void TRectype::write_memo(TIsam_handle file, const TRecnotype recno)
} }
} }
} }
CHECKD(recno >= 0, "Maiale! Non fare le GO con _recno < 0: ", recno); CHECKD(recno >= 0, "Maiale! Non fare le GO con _recno < 0: ", recno);
TCodeb_handle cb_handle = prefix().get_handle(file); const TCodeb_handle cb_handle = prefix().get_handle(file);
DB_go( cb_handle, recno); DB_go( cb_handle, recno);
for( int i = _memo_data->last( ); i > 0; i = _memo_data->pred( i ) ) for( int i = _memo_data->last( ); i > 0; i = _memo_data->pred( i ) )
{ {
if (_memo_data->is_dirty(i)) if (_memo_data->is_dirty(i))
DB_memowrite( cb_handle, r.Fd[ i ].Name, _memo_data->row( i ) ); DB_memowrite( cb_handle, r.Fd[ i ].Name, _memo_data->row( i ) );
} }
*this = (const char *) DB_getrecord(cb_handle); *this = (const char*)DB_getrecord(cb_handle);
init_memo(recno, file); init_memo(recno, file);
} }

View File

@ -853,7 +853,7 @@ for (int _e##isamfile = isamfile.first(); \
_e##isamfile = isamfile.next()) _e##isamfile = isamfile.next())
void get_idx_names(int logicnum, TToken_string& i_names); int get_table_names(int logicnum, TToken_string& i_names, int mode); // 1=dbf, 2=cdx, 4=fpt
void set_autoload_new_files(bool on); void set_autoload_new_files(bool on);
#endif // __ISAM_ #endif // __ISAM_

View File

@ -340,7 +340,7 @@ public:
// @cmember Forza la visualizzazione della pagina p // @cmember Forza la visualizzazione della pagina p
void show_page(int p); void show_page(int p);
// @cmember Abilita/disabilita una pagina e tutte le successive // @cmember Abilita/disabilita una pagina e tutte le successive
void enable_page(byte p, bool on = TRUE); void enable_page(byte p, bool on = true);
// @cmember Disabilita una pagina e tutte le successive (chiama <mf TMask::enable_page>) // @cmember Disabilita una pagina e tutte le successive (chiama <mf TMask::enable_page>)
void disable_page(byte p) void disable_page(byte p)
{ enable_page(p, false); } { enable_page(p, false); }

View File

@ -4,6 +4,7 @@
#include <agasys.h> #include <agasys.h>
#include <diction.h> #include <diction.h>
#include <progind.h> #include <progind.h>
#include <real.h>
#include <utility.h> #include <utility.h>
// skstream.h // skstream.h
@ -796,12 +797,16 @@ bool TSocketClient::HttpIsRedirectedServer(CONNID id, TString & http_server, TFi
static const TString& bytes2str(long b) static const TString& bytes2str(long b)
{ {
TString& tmp = get_tmp_string(50); TString& tmp = get_tmp_string(24);
if (b > 0) if (b > 0)
{ {
const double mega = 1024*1024; const long mega = 1024*1024;
if (b >= mega) if (b >= mega)
tmp.format("%.2lf MBytes", double(b)/mega); {
real m(b); m /= mega;
tmp = m.stringe(-1, 2); // Numero in formato digeribile da Excel (segue impostazionei internazionali)
tmp << " MBytes";
}
else else
{ {
const long kappa = 1024; const long kappa = 1024;
@ -869,6 +874,7 @@ bool TSocketClient::HttpGetFile(CONNID id, const char* remote, const char* local
else else
{ {
TProgind pi(size, strpi, true, true); TProgind pi(size, strpi, true, true);
pi.set_caption(TR("Trasferimento in corso..."));
while (!cur_socket->eof() && !pi.iscancelled()) while (!cur_socket->eof() && !pi.iscancelled())
{ {
const int nchars = min(buf.size(), size - total); const int nchars = min(buf.size(), size - total);

View File

@ -869,8 +869,7 @@ const TFilename& TFile_manager::get_filename(TIsam_handle id) const
TFile_manager::TFile_manager() TFile_manager::TFile_manager()
: _open_files(0) : _open_files(0)
{ {
TConfig prawin(CONFIG_INSTALL, "Main"); _max_open_files = xvt_sys_get_profile_int(NULL, "Main", "MaxHandles", 32);
_max_open_files = prawin.get_int("MaxHandles", NULL, -1, 16);
if (_max_open_files < 16) if (_max_open_files < 16)
_max_open_files = 16; _max_open_files = 16;
else else
@ -1082,7 +1081,7 @@ bool TPrefix::exist(long codditta) const
return s.exist(); return s.exist();
} }
} }
return FALSE; return false;
} }
bool TPrefix::test(const char* s) const bool TPrefix::test(const char* s) const
@ -1139,8 +1138,11 @@ bool TPrefix::set_codditta(long codditta, bool force)
set(s, force); set(s, force);
CPutPref(_prefix); CPutPref(_prefix);
if (_firm) if (_firm)
{
_firm->read(codditta); _firm->read(codditta);
return TRUE; xvt_sys_set_profile_string(NULL, "Main", "Company", _firm->get(NDT_RAGSOC));
}
return true;
} }
return false; return false;
} }

View File

@ -459,10 +459,7 @@ public:
// @base public | TString // @base public | TString
class TFilename : public TString class TFilename : public TString
// @author:(INTERNAL) Guido // @author:(INTERNAL) Guido
{ {
// @access Public Member // @access Public Member
public: public:
// @cmember Costruttore // @cmember Costruttore

View File

@ -220,15 +220,13 @@ class TExtrectype : public TVariable_rectype
RecDes _rd; RecDes _rd;
protected: // TRectype protected: // TRectype
virtual const RecDes& rec_des() const { return _rd; } virtual bool auto_virtual_fields() const { return true; }
virtual bool auto_virtual_fields() const { return TRUE; }
public: public:
virtual const RecDes& rec_des() const { return _rd; }
virtual word class_id() const { return CLASS_EXT_RECTYPE; } virtual word class_id() const { return CLASS_EXT_RECTYPE; }
virtual bool is_kind_of(word id) const { return id == class_id() || TVariable_rectype::is_kind_of(id); } virtual bool is_kind_of(word id) const { return id == class_id() || TVariable_rectype::is_kind_of(id); }
TExtrectype(const TTrec& r); // Costruisce il record a partire da r TExtrectype(const TTrec& r); // Costruisce il record a partire da r
virtual ~TExtrectype() ; virtual ~TExtrectype() ;
}; };

View File

@ -4,10 +4,11 @@
#include <controls.h> #include <controls.h>
#include <mask.h> #include <mask.h>
#include <prefix.h> #include <prefix.h>
#include <statbar.h>
#include <urldefid.h> #include <urldefid.h>
#include <utility.h> #include <utility.h>
#include <statbar.h> #include <nditte.h>
short CHARX = 8; short CHARX = 8;
short CHARY = 14; short CHARY = 14;
@ -557,12 +558,13 @@ void xvtil_statbar_set(
t.add(text); t.add(text);
if (prefix_valid() && main_app().get_firm() > 0) if (prefix_valid() && main_app().get_firm() > 0)
{ {
t.add(prefix().firm().get("RAGSOC")); t.add(prefix().firm().get(NDT_RAGSOC));
} }
else else
{ {
const TDate oggi(TODAY); TString80 ragsoc;
t.add(oggi.string()); xvt_sys_get_profile_string(NULL, "Main", "Company", "", ragsoc.get_buffer(), ragsoc.size());
t.add(ragsoc);
} }
t.add(main_app().title()); t.add(main_app().title());
if (def) if (def)