Aggiunta regexp alla ricerca nelle viswin-
Primo commit in diretta da Windows git-svn-id: svn://10.65.10.50/trunk@2979 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									84b7a30800
								
							
						
					
					
						commit
						e96e638f19
					
				| @ -1,3 +1,4 @@ | ||||
| #define F_STRING 101 | ||||
| #define F_DIRECT 102 | ||||
| #define F_REGEXP 104 | ||||
| #define F_CASE   103 | ||||
| @ -17,7 +17,12 @@ END | ||||
| 
 | ||||
| BOOLEAN F_CASE | ||||
| BEGIN | ||||
|   PROMPT 36 2 "Maiuscolo/Minuscolo" | ||||
|   PROMPT 2 2 "Maiuscolo/Minuscolo" | ||||
| END | ||||
| 
 | ||||
| BOOLEAN F_REGEXP | ||||
| BEGIN | ||||
|   PROMPT 36 2 "Espress. regolare" | ||||
| END | ||||
| 
 | ||||
| BUTTON DLG_OK 10 2 | ||||
|  | ||||
| @ -2,6 +2,7 @@ | ||||
| 
 | ||||
| #include <text.h> | ||||
| #include <xvtility.h> | ||||
| #include <regexp.h> | ||||
| 
 | ||||
| static char TEXT_TMP[513]; | ||||
| 
 | ||||
| @ -425,7 +426,8 @@ long TTextfile::search( | ||||
|   //
 | ||||
|   // @flag TRUE | Ricerca dalla posizione indicata all'inizio della riga (default)
 | ||||
|   // @flag FALSE | Ricerca dalla posizione indicata alla fine della riga
 | ||||
|   bool casesens)        // @parm Indica se ricerca il testo con criterio case sensitive (default FALSE)
 | ||||
|   bool casesens,        // @parm Indica se ricerca il testo con criterio case sensitive (default FALSE)
 | ||||
|   bool regexp)          // @parm indica se considerare la stringa un'espressione regolare (def. FALSE)
 | ||||
| 
 | ||||
|   // @comm Cerca in una riga per volta rispettando i formati
 | ||||
| {                         | ||||
| @ -436,10 +438,18 @@ long TTextfile::search( | ||||
|   for (long i = from; down ? (i < lines()) : (i >= 0); down ? i++ : i--) | ||||
|   {               | ||||
|     lin = line(i);   | ||||
|     if (regexp)  | ||||
|     {  | ||||
|       if (match(txt, lin)) | ||||
|         return i;  | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|       if (!casesens) lin.lower(); | ||||
|       if ((ret = lin.find(text)) != -1) | ||||
|         return i; | ||||
|     } | ||||
|   }      | ||||
|   return -1l; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -180,7 +180,8 @@ public: | ||||
|   void destroy();  | ||||
| 
 | ||||
|   // @cmember Cerca una stringa di testo all'interno di una riga
 | ||||
|   long search (const char* txt, int& pos, long from = 0, bool down = TRUE, bool casesens = FALSE); | ||||
|   long search (const char* txt, int& pos, long from = 0, bool down = TRUE,  | ||||
|                bool casesens = FALSE, bool regexp = FALSE); | ||||
|   // @cmember Sostituisce un testo all'interno di una riga
 | ||||
|   int replace(long line, const char* txt, int pos = 0, int len = -1); | ||||
| 
 | ||||
|  | ||||
| @ -2371,9 +2371,10 @@ long TViswin::search( | ||||
|   //
 | ||||
|   // @flag TRUE | Ricerca dalla posizione indicata all'inizio della riga (default)
 | ||||
|   // @flag FALSE | Ricerca dalla posizione indicata alla fine della riga
 | ||||
|   bool cs)              // @parm Indica se ricerca il testo con criterio case sensitive (default FALSE)
 | ||||
|   bool cs,              // @parm Indica se ricerca il testo con criterio case sensitive (default FALSE)      
 | ||||
|   bool regx)            // @parm indica se considerare espressioni regolari (def FALSE)
 | ||||
| { | ||||
|   return _txt.search(txt,pos,from,down, cs);                         | ||||
|   return _txt.search(txt,pos,from,down, cs, regx);                         | ||||
| } | ||||
| 
 | ||||
| // @doc INTERNAL
 | ||||
| @ -2412,9 +2413,12 @@ void TViswin::find() | ||||
|     _txt_to_find    = m.get(F_STRING); | ||||
|     _down_dir       = m.get(F_DIRECT) == "D"; | ||||
|     _case_sensitive = m.get_bool(F_CASE);   | ||||
|     _regexp         = m.get_bool(F_REGEXP); | ||||
|      | ||||
|     int x;  | ||||
|      | ||||
|     long l = search(_txt_to_find, x, _point.y, _down_dir, _case_sensitive); | ||||
|     long l = search(_txt_to_find, x, _point.y, _down_dir, _case_sensitive, | ||||
|                     _regexp); | ||||
|     if (l == -1l) | ||||
|     {  | ||||
|       _last_found.y = -1l; | ||||
|  | ||||
| @ -316,7 +316,8 @@ public: | ||||
|   void add_line(const char* l);                                        | ||||
|    | ||||
|   // @cmember Funzione di ricerca non interattiva
 | ||||
|   long search (const char* txt,  int& pos, long from = 0, bool down = TRUE, bool casesens = FALSE); | ||||
|   long search (const char* txt,  int& pos, long from = 0, bool down = TRUE,  | ||||
|                bool casesens = FALSE, bool regx = FALSE); | ||||
|   // @cmember Funzione di sostituzione di un testo all'interno di una riga non interattiva
 | ||||
|   int replace(long line, const char* txt, int pos = 0, int len = -1); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user