From 1b3a761cd8262b7ba98e66ce612f55bb4a39d091 Mon Sep 17 00:00:00 2001 From: angelo Date: Fri, 1 Dec 1995 16:58:35 +0000 Subject: [PATCH] Rif. mod. 95/53 : printapp.cpp : correzione alla stampa in stile di una TParagraph_string relation.cpp : spostata l'allocazione di _sort dal costruttore dei TSorted_cursor alla build_cursor(). strings.h : strings.cpp : aggiunto metodo TString::strip_spaces() per togliere da una stringa eventuali spazi doppi o ripetuti. git-svn-id: svn://10.65.10.50/trunk@2226 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- include/printapp.cpp | 7 +++++-- include/relation.cpp | 14 +++++++------- include/strings.cpp | 20 ++++++++++++++++++++ include/strings.h | 2 ++ 4 files changed, 34 insertions(+), 9 deletions(-) diff --git a/include/printapp.cpp b/include/printapp.cpp index 583262181..3bb39f251 100755 --- a/include/printapp.cpp +++ b/include/printapp.cpp @@ -1424,6 +1424,7 @@ bool TPrint_application::print_one ( { const char * s = para_str->get(); int row = pr->row(); + TPrintstyle xstyle = ((TPrintrow *)(&rw[row]))->get_style(); while (s != NULL) { @@ -1432,9 +1433,11 @@ bool TPrint_application::print_one ( row++; if (rw.objptr(row) == NULL) rw.add(new TPrintrow ()); - ((TPrintrow *) (&rw[row]))->put(ps, pos[pr->row()]); + ((TPrintrow *) (&rw[row]))->set_style(xstyle); + ((TPrintrow *) (&rw[row]))->put(ps, pos[pr->row()]); s = para_str->get(); - } + } + ((TPrintrow *) (&rw[row]))->set_style(normalstyle); } if (pos[pr->row ()] != -1) pos[pr->row ()] += ps.len (); diff --git a/include/relation.cpp b/include/relation.cpp index a5c8d6cb8..cb49c800e 100755 --- a/include/relation.cpp +++ b/include/relation.cpp @@ -1,4 +1,4 @@ -// $Id: relation.cpp,v 1.71 1995-11-27 08:39:02 guy Exp $ +// $Id: relation.cpp,v 1.72 1995-12-01 16:58:28 angelo Exp $ // relation.cpp // fv 12/8/93 // relation class for isam files @@ -1142,7 +1142,6 @@ TRecnotype TCursor::operator +=(const TRecnotype npos) return _pos; } - TRecnotype TCursor::items() { if (changed()) @@ -1230,6 +1229,7 @@ TRecnotype TSorted_cursor::buildcursor(TRecnotype rp) TString s; El_To_Sort * Element; + _sort = new TSort(sizeof(El_To_Sort)); _order_expr.restart(); while ((s=_order_expr.get()).not_empty()) { @@ -1240,8 +1240,9 @@ TRecnotype TSorted_cursor::buildcursor(TRecnotype rp) s.cut(s.len()-1); TFieldref f(s,0); // Il controllo del file e' automatico in f.len() - _sort->addsortkey(abspos+f.from(),f.len(relation()->curr()),versus); - CHECKS(f.len(relation()->curr())!=0,"Field can not have null length: ",(const char *) s); + int flen = f.len(relation()->curr()); + _sort->addsortkey(abspos+f.from(),flen,versus); + CHECKS(flen!=0,"Field can not have null length: ",(const char *) s); int lf = (f.file()!=0 ? f.file() : file().num()); TRectype r(lf); abspos+=r.length(f.name()); @@ -1321,6 +1322,7 @@ TRecnotype TSorted_cursor::buildcursor(TRecnotype rp) fwrite(page,sizeof(TRecnotype),pagecnt,_f); if (TCursor::pos() == -1) pos=0; delete page; + if (_sort) delete _sort; fclose (_f); return ap; } @@ -1356,7 +1358,7 @@ int TSorted_cursor::filtercursor(int pagecnt, TRecnotype* page) s.cut(s.len()-1); TFieldref f(s,0); TString sf=f.read(relation()); - TFieldtypes fld_type = file(f.file()).curr().type(s); + TFieldtypes fld_type = file(f.file()).curr().type(f.name()); if (fld_type == _datefld) // Se il campo e' di tipo data, la converte in ANSI! { TDate d(sf); @@ -1413,12 +1415,10 @@ TSorted_cursor::TSorted_cursor(TRelation *f, const char * order_expr, const char : TCursor(f,filter,key,from,to) { change_order(order_expr); - _sort = new TSort(sizeof(El_To_Sort)); } TSorted_cursor::~TSorted_cursor() { - if (_sort) delete _sort; } diff --git a/include/strings.cpp b/include/strings.cpp index 2dc748a84..3dde963c7 100755 --- a/include/strings.cpp +++ b/include/strings.cpp @@ -238,6 +238,26 @@ TString& TString::strip_spaces() return *this; } +TString& TString::strip_d_spaces() +{ + int j = 0; + bool spc = FALSE; + for (int i = 0; _str[i]; i++) + { + char c = _str[i]; + if (is_space(c)) + if (spc) + continue; + else + spc = TRUE; + else + if (spc) spc = FALSE; + _str[j++] = c; + } + _str[j] = '\0'; + return *this; +} + // Certified 100% const char* TString::class_name() const { return "String"; } diff --git a/include/strings.h b/include/strings.h index da715f311..c6a21130b 100755 --- a/include/strings.h +++ b/include/strings.h @@ -133,6 +133,8 @@ public: TString& strip(const char* k); // @cmember Elimina tutti gli spazi non contenuti tra apici singoli o doppi TString& strip_spaces(); + // @cmember Elimina tutti gli spazi doppi + TString& strip_d_spaces(); // @cmember Elimina gli spazi da sinistra o i primi n caratteri (da sinistra). TString& ltrim(int n = 0); // @cmember Elimina gli spazi da destra o i primi n caratteri (da destra).