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:
		
							parent
							
								
									1a6c398836
								
							
						
					
					
						commit
						337c8d45bc
					
				@ -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);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user