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 case 1 : sv1200(argc, argv); break; // Stampa Statistiche
default: sv1100(argc, argv); break; // Stampa Schede default: sv1100(argc, argv); break; // Stampa Schede
} }
exit(0);
return 0; return 0;
} }

View File

@ -71,6 +71,21 @@
#define FORMWIDTH 150 #define FORMWIDTH 150
#define DEFAULT_OUTFILE "outstat0" #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 // TPeriodo
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -891,27 +906,21 @@ void TStampa_stat::set_descr(int& row)
r << " "; r << " ";
r << strec.get(SVS_CODICE).mid(lencode); r << strec.get(SVS_CODICE).mid(lencode);
descr = strec.get(SVS_DESCR); descr = safe_string(strec.get(SVS_DESCR));
if (descr.full()) if (descr.full())
{ r << "@23g" << descr.get(0);
TString80 ragsoc = descr.get(0);
ragsoc.strip("%#$");
r << "@23g" << ragsoc;
}
set_row_atpos('R',++row,(const char *)r,_indent[level]); set_row_atpos('R',++row,(const char *)r,_indent[level]);
// Seconda riga eventuale... // Seconda riga eventuale...
const int items = descr.items(); const int items = descr.items();
if (items > 1) if (items > 1)
{ {
r = ""; r = descr.get(1);
r << descr.get(1);
// Sfrutta al massimo la seconda riga, mettendo anche il terzo elemento // Sfrutta al massimo la seconda riga, mettendo anche il terzo elemento
// e cmq trimmando al 25o carattere // 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); r << ' ' << descr.get(2);
if (r.len() > MAX_DESC_LEN)
r.cut(MAX_DESC_LEN); r.cut(MAX_DESC_LEN);
} }
r.insert("@23g"); r.insert("@23g");
@ -1262,7 +1271,7 @@ int TStampa_stat::handle_levchange(int row, const int level)
_wrk_row.insert(FR("@bTotale "), 0); _wrk_row.insert(FR("@bTotale "), 0);
_wrk_row << ' ' << rec_grp1.get(SVS_CODICE).mid(lencode); _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! //_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); row = set_rows_colonne(row, rec_grp1);
@ -1938,7 +1947,7 @@ void TStampa_stat::genera_file(const char *outfn)
const int periofin = _stats.date2period(datafin); const int periofin = _stats.date2period(datafin);
TProgind statusbar(period2long(datafin.year(), periofin,_stats.frequency())-start_status, 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(); _svcache->zap();

View File

@ -26,17 +26,12 @@ void TRWrecord_cache::discard(const TString & vittima)
file().curr()=rec; file().curr()=rec;
if (fl == 'D') if (fl == 'D')
{ {
err=file().rewrite(); err=file().rewrite_write();
if (err!=NOERR)
err=file().write();
if (err!=NOERR) if (err!=NOERR)
error_box(TR("Errore nella riscrittura della cache")); error_box(TR("Errore nella riscrittura della cache"));
} else { } else {
err=file().write(); err=file().write_rewrite();
if (err!=NOERR) 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); _flags.remove(vittima);