begin process at 2012 02 15 08:51:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Algorithme

 > 

Maths

 > 

Rechercher un mot dans une source binaire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Rechercher un mot dans une source binaire

mardi 21 octobre 2008 à 20:57:26 | Rechercher un mot dans une source binaire

kakenette

Bonjour, voilà j'ai fait une petite fonction booléenne pour savoir si oui ou non un mot a été trouvé dans la source d'un fichier, je voulais savoir si il existe ou si vous connaissez une méthode plus rapide que celle que j'ai faite qui suit :

Peut être mon idée de tableau est pas bonne...

---
SearchStr = "Le mot"
---
Dim bContents() As Byte
ReDim bContents(LOF(oFile))
Get #oFile, , bContents
---

La partie de recherche que j'aimerai amélioré :

        For i = 0 To UBound(bContents)
            If bContents(i) = Asc(Left$(SearchStr, 1)) Then
                Found = 0
                For j = Len(SearchStr) - 1 To 1 Step -1
                    If bContents(i + j) <> Asc(Mid$(SearchStr, 1 + j, 1)) Then
                        Found = -1
                        Exit For
                    End If
                Next
                If Found = 0 Then
                    MSGBOX " TROUVER !"
                End If
            End If
        Next

Ps: Si vous ne comprenez rien dite le moi j'essayerai de mieux m'expliquer lol.

kakenette
mardi 21 octobre 2008 à 23:15:46 | Re : Rechercher un mot dans une source binaire

PCPT

Administrateur CodeS-SourceS
salut,

à vérifier avec le fichier en question mais logiquement, "le mot" est alors entrecoupé de vbnullchar

dans quel cas on doit pouvoir accélérer la recherche avec (après la lecture vers le tableau de byte) :

dim s$
s=
bContents
found = iif(instrb(1,s,
strconv(SearchStr,vbunicode))=0,-1,0)


pas testé et juste tapé dans cette fenêtre, çà doit pas être bien loin de çà....
++

Prenez un instant pour répondre à ce sondage svp <
mercredi 22 octobre 2008 à 08:31:24 | Re : Rechercher un mot dans une source binaire

kakenette

Hello, je comprend pas comment modifier avec se que tu ma donner...

kakenette
mercredi 22 octobre 2008 à 10:04:44 | Re : Rechercher un mot dans une source binaire

PCPT

Administrateur CodeS-SourceS
j'ai pourtant repris tes "-1" et "0" du la même manière que toi, justement....

SearchStr = "Le mot"
Dim bContents() As Byte
ReDim bContents(LOF(oFile))
Get #oFile, , bContents

dim s$
s=
bContents
if instrb(1,s,
strconv( SearchStr ,vbunicode) )>0 then MSGBOX "TROUVé !"

Prenez un instant pour répondre à ce sondage svp 
mercredi 22 octobre 2008 à 10:23:55 | Re : Rechercher un mot dans une source binaire

kakenette

Et bien hélasse ça marche pas. ça ne me trouve pas le mot. :(

kakenette
mercredi 22 octobre 2008 à 10:39:36 | Re : Rechercher un mot dans une source binaire

kakenette

j'ai remplacer toute ma boucle de recherche par se que tu ma mis mais ça fonctionne pas, ça me renvoie toujours -1
mercredi 22 octobre 2008 à 13:35:48 | Re : Rechercher un mot dans une source binaire

PCPT

Administrateur CodeS-SourceS
j'ai pas testé et c'est saisi ici.....
tu peux héberger un fichier?
mercredi 22 octobre 2008 à 14:31:28 | Re : Rechercher un mot dans une source binaire

kakenette

hein ? j'ai pas compris se que tu veux me dire, tu veux que j'héberge quoi?

En réalité la fonction est asser simple, J'ouvre un fichier, je récupère la source binaire et je regarde si oui ou non un mot s'y trouve. Pour le moment j'ai pas trouver plus vite que ma boucle...

kakenette
mercredi 22 octobre 2008 à 17:10:47 | Re : Rechercher un mot dans une source binaire

PCPT

Administrateur CodeS-SourceS
si c'est un fichier "normal" (ascii ou ansi), pourquoi tu l'ouvres en binaire?
c'est pourquoi je demandais un exemple de fichier

et dans ce cas :

Private Sub  Form_Load()
    Dim FF As Integer, sBuffer As String
    Const SearchStr As String "Le mot"
    FF = FreeFile
    Open "C:\fichier.txt" For Input As #FF
        sBuffer = Input(LOF(FF), 1)
    Close #FF
    
    If InStrB(1, sBuffer, SearchStr) > 0 Then MsgBox "TROUVé !"
End Sub

possible également de lire ligne par ligne pour ne pas avoir à récupérer la totalité d'un bloc, la différence d'exécution ne s'en fera ressentir que sur de gros fichiers, à tester...


Prenez un instant pour répondre à ce sondage svp 
mercredi 22 octobre 2008 à 17:13:27 | Re : Rechercher un mot dans une source binaire

kakenette

C'est comme ca que tu voulais dire ?

Private Sub Command1_Click()

        Dim bContents() As Byte
        Dim SearchStr As String
        Dim oFile As Long
       
        oFile = FreeFile
       
        Open "Chemin du fichier" For Binary Access Read As #oFile
            ReDim bContents(LOF(oFile))
            Get #oFile, , bContents
        Close #oFile

        SearchStr = "Le mot"

        Dim s$
        s = bContents
        If InStrB(1, s, StrConv(SearchStr, vbUnicode)) > 0 Then MsgBox "TROUVé !"

End Sub

Ca trouve pas :(

kakenette

1 2

Cette discussion est classée dans : mot, source, searchstr, if, bcontents


Répondre à ce message

Sujets en rapport avec ce message

Valeur Suivante Fichier Texte!! [ par Nitz999 ] Bonjour,J'ai deux problèmes :1- J'ai réussi à récupérer une valeur d'un fichier texte entre deux mots, mais je suis incapable de récupérer les valeurs Traduction source c en VB.Net (Algo Bruteforce) [ par Redman31100 ] Bonjour j'ai essayé de mettre ce code : http://www.cppfrance.com/codes/ALGORITHME-BRUTE-FORCE_41911.aspx en VB.Net mais quand j'ai fait le test j'ai u Ajouter [ par saveourssouls ] Voila, j'aimerais savoir si vous connaissiez un lien d'une source (j'ai cherché) ou carrément une source en tête. En fait, augmenter un mot. Imaginons Mot de passe [ par MoiDebutantVBA ] j'ai téléchargé une page excel avec des macros et la source et protégée par un mot de passe...coment faire pour voir la source...merci positionnement RichTextBox besoin d'idee stp [ par barrimaamine ] Bonjour, voila mon problème : je veux que mon RichTextBox détecte certain mot pour les mettres en blue ou autre couleur. Pour le moment voila ce que inputbox>mot de passe marche plus [ par barth62 ] bonjour j'ai trouve ce petit code sur internet je l'avais essaye hier (ca marchait )et la ca MARCHE PLUS [^^sad2][^^sad1][^^sad2] je marque dans le t Instr et Like en série [ par lacomm ] Bonjour à tous,J'ai un type défini:Private Type mot    pos As Integer    long As StringEnd TypeJ'ai une pr ListBox et base de données [ par Sinsitrus ] Salut à tous ! J'ai une base de données Access connecté à mon projet VB et je souhaiterai que lorsque je clique sur le bouton, le mot se trouvant dan Faut-il dire "une source" ou "un source"? [ par racpp ] Salut tout le monde,Les dictionnaires de français précisent que le mot "source" est toujours féminin. Mais dans beaucoup d'ouvrages ou documents d'inf Annulation de la dernière procédure en VB6 [ par cyth56 ] Bonjour, je cherche la solution pour annuler ma dernière procédure. Voici une partie du code.VB6 Private Sub Com3_Click() Timer2 = False Com3.Caption


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,279 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales