E' stata cmabiata per l'ennesima volta la TParagraph_string::tokenize().

Spero sia la volta buona


git-svn-id: svn://10.65.10.50/trunk@3921 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1996-11-22 17:24:10 +00:00
parent 1a6c398836
commit 337c8d45bc

View File

@ -1418,25 +1418,32 @@ const TString& TParagraph_string::operator =(const char* s)
void TParagraph_string::tokenize() void TParagraph_string::tokenize()
{ {
int last_space = 0; int last_space = 0, last_start = 0;
int chars_in_row = 0; int num_chars = 0;
const int l = len(); const int l = len();
TString stmp; TString stmp,sstr(_str),swork; // stringhe di lavoro
for (int start = 0; start < l; start++) for (int start = 0; start < l;)
{ {
switch (_str[start]) switch (_str[start])
{ {
case '\n': _str[start]='|'; last_space = 0;chars_in_row=0; break; case '\n': last_space = start; num_chars = _width; break;
case ' ' : last_space = start; chars_in_row++; break; case ' ' : last_space = start; num_chars++; break;
default : chars_in_row++; break; default : num_chars++; break;
} }
stmp<<_str[start];
if (chars_in_row == _width && chars_in_row != l) if (num_chars == _width)
{ {
if (last_space!=0) stmp[last_space] = '|'; int num_of_chars_in_row = (last_space+1) - last_start;
else stmp<<"|"; if (num_of_chars_in_row <= 0) num_of_chars_in_row = _width; // Se non ci sono spazi tronca la stringa a 25
last_space = 0; chars_in_row = 0; swork=sstr.mid(last_start,num_of_chars_in_row);
stmp << swork.trim();
stmp << "|";
last_space = num_chars = 0;
start = start - (_width - num_of_chars_in_row); // riporta indietro (toglie il numero di caratteri effettivi della riga)
last_start = start;
} }
start++;
} }
TToken_string::operator=(stmp); TToken_string::operator=(stmp);
} }