Hi all, I'm using a TextArea in a little project like a Text Editor.
When I add the part of code to search in the text of this TextArea, I have a problem during search text whith the command 'instr'. In fact, when this command find accented characters, it count 2 characters instead of 1 and the position of the search at the end it false. Does any body have an explication about this problem please ? Joined the code to search in the TextArea --------------------------------------------------------------------- Public SAVMARKER as Interger Public Button1_Click() SearchTextInEditor(1) End PUBLIC SUB SearchTextInEditor(MODE AS Integer) ' MODE: 0 => From the beginning of the text ' MODE: 1 => After the last search DIM IndexCarac AS Integer DIM CaracTexte AS String DIM IndexRecherche AS Integer DIM LongueurRecherche AS Integer TextBox39.Text = Replace(TextBox39.Text, "\"", "") TextBox40.text = Replace(TextBox40.text, "\"", "") IF TextArea1.Length > 0 THEN IF TextBox39.text = "" THEN Message.Warning(("Please entrer text to search !"), ("Close")) RETURN END IF Application.Busy = 1 SELECT CASE MODE CASE 0 ' search from the beginning of the text SAVMARKER = 0 IF ToggleButton5.Value = TRUE THEN ' Use the case sensitive IndexRecherche = InStr(TextArea1.Text, TextBox39.Text, SAVMARKER, gb.Text) ELSE ' No case sensitive IndexRecherche = InStr(Lower$(TextArea1.Text), Lower $(TextBox39.Text), SAVMARKER, gb.Text) END IF IF IndexRecherche > 0 THEN TextArea1.Select(IndexRecherche - 1, Len(TextBox39.Text)) TextArea1.EnsureVisible() SAVMARKER = IndexRecherche + Len(TextBox39.Text) PRINT "IndexRecherche=" & IndexRecherche IF SAVMARKER > TextArea1.Length THEN SAVMARKER = TextArea1.Length END IF LongueurRecherche = Len(TextBox39.Text) ELSE Application.Busy = 0 Message.Info(("Search finished. End of list attained."), ("Close")) RETURN END IF CASE 1 ' Search following ... IF ToggleButton5.Value = TRUE THEN ' Use the case sensitive IndexRecherche = InStr(TextArea1.Text, TextBox39.Text, SAVMARKER, gb.Text) ELSE ' Ne pas tenir compte de la casse IndexRecherche = InStr(Lower$(TextArea1.Text), Lower $(TextBox39.Text), SAVMARKER, gb.Text) END IF IF IndexRecherche > 0 THEN TextArea1.Select((IndexRecherche - 1), Len(TextBox39.Text)) SAVMARKER = IndexRecherche + Len(TextBox39.Text) IF SAVMARKER > TextArea1.Length THEN SAVMARKER = TextArea1.Length END IF ELSE Application.Busy = 0 Message.Info(("Search finished. End of list attained."), ("Close")) RETURN END IF END SELECT END IF Application.Busy = 0 END ----------------------------------------------------------------------------- Thank you in advance. -- Olivier CRUILLES Email: linu...@club-internet.fr ------------------------------------------------------------------------------ _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user