RichTextBox

Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
11 avril 2013
-
Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
11 avril 2013
-
Bonjour,

je suis en train de développer un simple éditeur de texte permettant la modification d'un fichier avec une fonction de recherche et la sauvegarde de ce fichier.

pourriez vous m'aider sur deux problèmes qui me tracassent ?

lors de l'ouverture d'un fichier avec l'objet 'richtextbox' (richtext.filename = nom_fic), le fichier est toujours accessible via une autre application. comment vérouillé l'accès à ce fichier ?
la commande filename possède t'elle un paramètre permettant ce vérouillage ou bien faut il ouvrir le fichier dans le richtextbox et ensuite ouvrir le fichier à l'aide d'un open et le fermer avec un close lorsqu'on sort de l'éditeur ...

j'espere être assez clair ...

D'autre part, dans la fonction de recherche, je ne sais pas comment récupérer la position
du curseur.
ceci dans le but de pouvoir effectuer la recherche plusieurs fois dans le texte.

voici mon code qui ne recherche qu'une fois dans le texte :
    positionrech = richtext.Find("bonjour", , , rtfNoHighlight)
    If positionrech <> -1 Then
      richtext.SelStart = positionrech
      richtext.SelLength = Len("bonjour")
   Else
      MsgBox "Chaîne introuvable."
   End If

merci d'avance pour toute votre aide,

8 réponses

Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Salut si ton fichier à lire est un fichier texte pourquoi ne lis tu pas directement dedans?

 Drikce 06
Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
11 avril 2013
1
le lire directement dedans ? c'est à dire ?

le but de cet éditeur est de ne pas donner l'accès au répertoire des fichiers
aux utilisateurs et de limiter la sauvegarde au même nom du fichier (fonction 'save' et non pas 'save as').

merci,
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Pour illustrer ce que je veux dire :

Sub Recherche(ByVal FilePath As String, ByVal TexteChercher As String)


Dim TaString As String
Dim count As Integer


Open FilePath For Input As #1


count = 0


While Not EOF(1)


Line Input #1, TaString


If InStr(1, TaString, TexteChercher, vbTextCompare) Then


count = count + 1


End If


Wend


MsgBox texterechercher & " apparaît " & count & " fois"


Close #1


End Sub


Private Sub CommandButton1_Click()


Call Recherche("C:\Analyse.txt", "bonjour")


End Sub

 Drikce 06
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
A modifier :
MsgBox textechercher & " apparaît " & count & " fois"

 Drikce 06
Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
11 avril 2013
1
euh ...

en fait, je souhaite bannir la lecture du fichier en boucle puisque le fichier peut atteindre 15 mega.


et la recherche doit positionner le curseur sur le mot recherché (comme un éditeur de texte) et non pas le nombre de fois trouvé.


 


donc pour résumer, je cherche à savoir comment ouvrir un fichier dans un richtextbox en mode vérouillé et comment connaître la position du curseur dans un richtextbox.


c'est peut etre un peu plus clair maintenant...


 


merci quand même pour tes réponses Drikce06 !!!
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Effectivement ça change tout.

 Drikce 06
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Intéresse-toi à la propriété Selstart (pour la position du curseur)


Intéresse-toi à Instr (pour la recherche d'un mot) ... Mais, avec un si grand fichier (15 mega, dis-tu, ça va être lourd ...)


Après avoir inséré ton fichier dans ta richtextbox, applique la méthode Open (sans rien fairee dans le fichier) , qui le verrouillera alors (ne pas oublier de libérer par un Close à la fin). Je ne sais maintenant pas comment l'insertion se fait (si d'un coup, tout ira bien... si par "séquences, par contre, les séquences successives seraient gênées par un verrouillage. Essaie et vois ... Si gêne : utilise un tremplin quelconque, genre utilisation d'une copie temporaire détruite in fine.

Ceci étant dit, j'utiliserais à ta place l'insertion d'on objet OLE et une copie temporaire détruite in fine.
Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
11 avril 2013
1
merci jmfmarques !

en effet, avec la propriété selstart y a du mieux :-)

    positionrech = richtext.Find("bonjour", richtext.selstart+1 , , rtfNoHighlight)
    If positionrech <> -1 Then
      richtext.SelStart = positionrech
      richtext.SelLength = Len("bonjour")
   Else
      MsgBox "Chaîne introuvable."
   End If