Probleme option strick avec ma fonction de recherche

FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022 - Modifié le 17 août 2022 à 18:48
FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022 - 18 août 2022 à 18:53

  Bonjour,

ma fonction de recherche me retourne un probleme avec l option strict 

conversion du mode integer a string  et interdite.

comment je peu faire ?

 Dim TA As New ArrayList

 Dim CS As String = TA.Count

        Dim i As Integer    'Variable de boucle
        Dim AChercher As String = "treasure" 'String à chercher
        For i = 0 To CS
            If TA(i) Is AChercher Then
                MsgBox(i)
                Exit For
            End If
        Next i

1 réponse

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
17 août 2022 à 19:11

Il faut aussi retirer l'import automatique de l'espace de nom Microsoft.VisualBasic, ça t'incite à faire du code style VB6 et est donc à proscrire.

Remplace

MsgBox(i)

Par

MessageBox.Show(i.ToString())


0
FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022
17 août 2022 à 19:13

mon probleme et plus haut dans le code la dim cs et le for qui le reutilise si tu peu regarder et me corriger le probleme

0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159 > FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022
17 août 2022 à 20:37

Je n'ai pas vraiment compris, ma réponse reste valable et est à appliquer quand même.

Pour ton test, ce sont des chaines de caractères (String) donc des objets.

If TA(i) Is AChercher Then

Doit devenir

If TA(i).Equals(AChercher) Then

Sinon tu compare les valeurs de pointeurs et forcément ils sont différents.

0
FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022 > NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024
Modifié le 17 août 2022 à 21:19

j ai fait comme sa pour regler le probleme de conversion mes bizarment il me fait une erreur de depassement d index

'L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.

Dim CS As String = CStr((TA.Count))

        Dim i As Integer    'Variable de boucle
        Dim AChercher As String = "treasure" 'String à chercher
        For i = 0 To CInt(CS)
            If TA(i).Equals(AChercher) Then
                MsgBox(i)
                Exit For
            End If
        Next i
0
FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022 > FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022
Modifié le 17 août 2022 à 21:54

finalement j ai trouver la formule tu ma inspirer

  Dim CS As String = CStr((TA.Count))

        Dim i As Integer    'Variable de boucle
        Dim AChercher As String = "treasure" 'String à chercher
        For i = 0 To CInt(CS) - 1
            If TA(i).ToString.Contains(AChercher) Then
                MsgBox(i)
                ListBox2.Items.Add((TA(i)))
                numindex = i
                Exit For

            End If
        Next i
        MsgBox(TA(numindex))

en mettent le -1 a la for si il trouve pas la recherche il me donne le derniere lien du tableau sa evite l erreur de sortie d index

0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159 > FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022
17 août 2022 à 21:52

En cas de non trouvé, in sortira de la boucle simplement.

Note du coup, pour itérer sur les tableaux, il est préférable d'utiliser leur taille réelle :

For i = 0 To CInt(CS)

Devient :

For i = 0 To TA.Lenght - 1
0
Rejoignez-nous