Faire une recherche dans un Byte()

Résolu
narfight Messages postés 129 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 4 mars 2010 - 1 avril 2008 à 14:13
narfight Messages postés 129 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 4 mars 2010 - 1 avril 2008 à 15:42
Bonjour,
J'ai une varriable de type Byte(). Je voudrais faire une recherche d'un mots qui serait présent au format Unicode mais sans faire une conversion de mon Byte() en string afin d'en extraire ça position pour au final isoler une partie du tableau dans un autre Byte().

J'ai essayé d'extraire la position en faisant ainsi : mon_byte.FindIndex(mon_byte, StringDeRecherche) mais il me dit qu'il n'arrive pas à identifier les types de parametre :(

Avez-vous une idée ?

Merci d'avance

4 réponses

NHenry Messages postés 15025 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 novembre 2022 157
1 avril 2008 à 15:24
Bonjour

Tu peux convertir ta chaine en byte(), puis tu recherche la première occurence du premier octet, puis tu regarde les autres octets qui suivent et si tu trouve une différence, tu repar pour un tour à partir de 'occurence trouvée précédamment.

Nous captons le cockpit coupable qui a capoté
VB (6, .NET1&2), C++, C#.Net1
Mon site
3
narfight Messages postés 129 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 4 mars 2010
1 avril 2008 à 15:27
c'est ce que j'ai fait en attendant une réponse. il n'a donc rien de plus propre ?

Je poste ma source ici pour ceux qui serait dans le même cas que moi :
<hr size="2" width="100%" />        ''' <summary>

        ''' Find the
string into the byte() encoded on Unicode

        ''' </summary>

        ''' Data on Unicode

        ''' String to find

        ''' return index of Xeme element find + length of text
parameter

        ''' <returns>Return index
of begin of string</returns>

        ''' <remarks></remarks>

        PrivateFunction findinbyte(ByRef
Data AsByte(),
ByVal text AsString, OptionalByVal nbr AsInteger = 1) AsInteger

            Dim
recherche AsByte()
= Encoding.Unicode.GetBytes(text)

            For
a AsInteger =
0 To Data.Count - 1 - recherche.Count - 1 Step 2

                For
b AsInteger =
0 To recherche.Count - 1

                    If
Data(a + b) <> recherche(b) Then

                        ExitFor

                    EndIf

                    If
b = recherche.Count - 1 Then

                        nbr -= 1

                        If nbr = 0 Then

                            Return
a + recherche.Count

                        EndIf

                    EndIf

                Next

            Next

            Return
-1

        EndFunction

<hr size="2" width="100%" />
3
NHenry Messages postés 15025 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 novembre 2022 157
1 avril 2008 à 15:39
Bonjour

Il y a peut être plus propre, mais je ne connais pas.

Juste à titre d'info, il y a IndexOf(...) qui permet de trouver une valeur, peut être que ça peut accélérer ta recherche.

Nous captons le cockpit coupable qui a capoté
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
narfight Messages postés 129 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 4 mars 2010
1 avril 2008 à 15:42
Je vais y regarder, merci beaucoup
0