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

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

@ -1054,10 +1054,7 @@ const char* TControl::parse_caption(const char* cap, bool& bold, bool& big, COLO
else
{
int r = 0, g = 0, b = 0;
sscanf(t, "%d,%d,%d", &r, &g, &b);
if (r == 0 && g == 0 && b == 0)
color = COLOR_BLACK;
else
if (sscanf(t, "%d,%d,%d", &r, &g, &b) == 3)
color = XVT_MAKE_COLOR(r, g, b);
}
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 ok = true;
return ok;
return true;
}
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;
else attr &= ~mask;
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);
}
}
// @doc INTERNAL

@ -383,45 +383,33 @@ bool get_tabapp(const char * tabname, TString& app)
// @doc INTERNAL
// @func Ritorna una Token_string con in nome dell'indice
void get_idx_names(
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
int get_table_names(
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
int mode)
// @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);
/*
if (c & 1) f.ext("cdx");
if (c & 4) f.ext("mdx");
i_names.cut(0);
i_names.add(f);
f.ext("");
f.rtrim(1);
if ((c & 2) || (c & 8)) // DBIII or CLIPPER format, returns f_name + .cgp, f_nameX + .n{d|t}x
if (mode & 1)
i_names = f;
if (mode & 2)
{
TTrec r;
r.get(logicnum);
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);
}
f.ext("cdx");
i_names.add(f);
}
i_names.restart();
*/
f.ext("cdx");
i_names = f;
if (mode & 4)
{
f.ext("fpt");
if (f.exist())
i_names.add(f);
}
return i_names.items();
}
// 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
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--)
if (rd->Fd[i].TypeF == _memofld)
return TRUE;
return FALSE;
for( int i = rd.NFields - 1; i >= 0; i--)
if (rd.Fd[i].TypeF == _memofld)
return true;
return false;
}
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)
@ -2137,14 +2124,10 @@ int TSystemisamfile::update(
TString s(256); s << TR("Aggiornamento") << ' ' << fname;
const TRecnotype nitems = items();
#ifdef DBG
TProgind p(nitems > 0 ? nitems : 1, s, true, true);
#else
TProgind p(nitems > 0 ? nitems : 1, s, false, true);
#endif
TProgind p(nitems > 0 ? nitems : 1, s, is_power_station(), true);
TExtrectype nrec(wrec);
const int nflds = curr().items();
TArray infld, outfld;
int j;
@ -2155,7 +2138,7 @@ int TSystemisamfile::update(
if (nrec.exist(fld_name))
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())
{
if (!p.addstatus(1))
@ -2167,7 +2150,7 @@ int TSystemisamfile::update(
if (curr().isdeleted())
continue;
nrec.zero();
for (j = outfld.last(); j >= 0; j = outfld.pred(j))
{
@ -2196,7 +2179,7 @@ int TSystemisamfile::update(
browse_null(nrec.string(),lenr);
memcpy(DB_getrecord(fhnd),nrec.string(),lenr);
err=DB_add(fhnd);
if ( err == NOERR && nrec.has_memo())
if ( err == NOERR && memo_inside)
nrec.write_memo(ishandle, DB_recno(fhnd));
if (err != NOERR)
err=get_error(err);
@ -2879,7 +2862,7 @@ int TSystemisamfile::dump(
TRecnotype i = 0;
const TRecnotype nitems = items();
s.format(FR("Esportazione archivio %s"), filename());
s.format(FR("Esportazione %s"), filename());
TProgind p(nitems, s, TRUE, TRUE, 70);
TString s1, sfld;
@ -3087,7 +3070,7 @@ int TSystemisamfile::dump(
TRecnotype i = 0;
const TRecnotype nitems = items();
s.format(FR("Esportazione archivio %s"), filename());
s.format(FR("Esportazione %s"), filename());
TProgind p(nitems, s, TRUE, TRUE, 70);
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);
TCodeb_handle cb_handle = prefix().get_handle(file);
const TCodeb_handle cb_handle = prefix().get_handle(file);
DB_go( cb_handle, recno);
for( int i = _memo_data->last( ); i > 0; i = _memo_data->pred( i ) )
{
if (_memo_data->is_dirty(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);
}

@ -853,7 +853,7 @@ for (int _e##isamfile = isamfile.first(); \
_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);
#endif // __ISAM_

@ -340,7 +340,7 @@ public:
// @cmember Forza la visualizzazione della pagina p
void show_page(int p);
// @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>)
void disable_page(byte p)
{ enable_page(p, false); }

@ -4,6 +4,7 @@
#include <agasys.h>
#include <diction.h>
#include <progind.h>
#include <real.h>
#include <utility.h>
// skstream.h
@ -796,12 +797,16 @@ bool TSocketClient::HttpIsRedirectedServer(CONNID id, TString & http_server, TFi
static const TString& bytes2str(long b)
{
TString& tmp = get_tmp_string(50);
TString& tmp = get_tmp_string(24);
if (b > 0)
{
const double mega = 1024*1024;
const long mega = 1024*1024;
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
{
const long kappa = 1024;
@ -869,6 +874,7 @@ bool TSocketClient::HttpGetFile(CONNID id, const char* remote, const char* local
else
{
TProgind pi(size, strpi, true, true);
pi.set_caption(TR("Trasferimento in corso..."));
while (!cur_socket->eof() && !pi.iscancelled())
{
const int nchars = min(buf.size(), size - total);

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

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

@ -220,15 +220,13 @@ class TExtrectype : public TVariable_rectype
RecDes _rd;
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:
virtual const RecDes& rec_des() const { return _rd; }
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); }
TExtrectype(const TTrec& r); // Costruisce il record a partire da r
virtual ~TExtrectype() ;
};

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