Corretta stampa descrizioni contenenti simboli di stampa (#$&@)

git-svn-id: svn://10.65.10.50/branches/R_10_00@22697 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2012-07-10 13:49:54 +00:00
parent f303d5be71
commit 4a5ecc1955
3 changed files with 28 additions and 25 deletions

View File

@ -10,6 +10,5 @@ int main(int argc, char** argv)
case 1 : sv1200(argc, argv); break; // Stampa Statistiche
default: sv1100(argc, argv); break; // Stampa Schede
}
exit(0);
return 0;
}

View File

@ -71,6 +71,21 @@
#define FORMWIDTH 150
#define DEFAULT_OUTFILE "outstat0"
///////////////////////////////////////////////////////////
// Utility
///////////////////////////////////////////////////////////
const char* safe_string(const TString& str)
{
TString256 tmp = str;
tmp.strip("@#$%");
tmp.replace('&', 'e');
if (tmp != str)
return get_tmp_string() = tmp;
return str;
}
///////////////////////////////////////////////////////////
// TPeriodo
///////////////////////////////////////////////////////////
@ -891,31 +906,25 @@ void TStampa_stat::set_descr(int& row)
r << " ";
r << strec.get(SVS_CODICE).mid(lencode);
descr = strec.get(SVS_DESCR);
descr = safe_string(strec.get(SVS_DESCR));
if (descr.full())
{
TString80 ragsoc = descr.get(0);
ragsoc.strip("%#$");
r << "@23g" << ragsoc;
}
r << "@23g" << descr.get(0);
set_row_atpos('R',++row,(const char *)r,_indent[level]);
// Seconda riga eventuale...
const int items = descr.items();
if (items > 1)
{
r = "";
r << descr.get(1);
r = descr.get(1);
// Sfrutta al massimo la seconda riga, mettendo anche il terzo elemento
// e cmq trimmando al 25o carattere
if (items > 2)
if (items > 2) // Guy: come può succedere visto che TParagraph_string descr("", MAX_DESC_LEN)
{
r << " " << descr.get(2);
if (r.len() > MAX_DESC_LEN)
r.cut(MAX_DESC_LEN);
r << ' ' << descr.get(2);
r.cut(MAX_DESC_LEN);
}
r.insert("@23g");
set_row_atpos('R',++row,(const char *)r,_indent[level]);
set_row_atpos('R',++row, (const char*)r,_indent[level]);
}
}
@ -1262,9 +1271,9 @@ int TStampa_stat::handle_levchange(int row, const int level)
_wrk_row.insert(FR("@bTotale "), 0);
_wrk_row << ' ' << rec_grp1.get(SVS_CODICE).mid(lencode);
_wrk_row << ' ' << rec_grp1.get(SVS_DESCR).left(23);
_wrk_row << ' ' << safe_string(rec_grp1.get(SVS_DESCR).left(23));
//_wrk_row.cut(LARG_COLCODICE); there are also @ chars!
set_row_atpos('R',++row,(const char *)_wrk_row,_indent[_last_lev_grp]);
set_row_atpos('R',++row,(const char*)_wrk_row,_indent[_last_lev_grp]);
row = set_rows_colonne(row, rec_grp1);
if (printmask().get_bool(F_STRAFFRONTO ))
{
@ -1938,7 +1947,7 @@ void TStampa_stat::genera_file(const char *outfn)
const int periofin = _stats.date2period(datafin);
TProgind statusbar(period2long(datafin.year(), periofin,_stats.frequency())-start_status,
TR("Creazione del file di output"), FALSE, TRUE, 60);
TR("Creazione del file di output"), FALSE, TRUE);
_svcache->zap();

View File

@ -26,18 +26,13 @@ void TRWrecord_cache::discard(const TString & vittima)
file().curr()=rec;
if (fl == 'D')
{
err=file().rewrite();
if (err!=NOERR)
err=file().write();
err=file().rewrite_write();
if (err!=NOERR)
error_box(TR("Errore nella riscrittura della cache"));
} else {
err=file().write();
err=file().write_rewrite();
if (err!=NOERR)
if (err == _isreinsert)
file().rewrite();
else
error_box(TR("Errore nella scrittura della cache"));
error_box(TR("Errore nella scrittura della cache"));
}
_flags.remove(vittima);