Dépacement de capacité (où est le problème?)

Résolu
Messages postés
5
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
13 juin 2007
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Bonjour, donc voici mon code :


J'ai dans ma form principale un boutton, qui contient le code ci-dessous et une TextBox.

Dans ma seconde Form (Form1), j'ai une FileList et un Label.


Ce code cherche parmi une liste de dico (dans la FileList) un mot
indiqué dans la TextBox. Donc il vérifie chaque ligne des dico l'un
après l'autre. Mais il y a une erreur : "Dépacement de capacité". Je
sais ce que c'est mais je ne vois pas pourquoi il me met ça, je ne vois
pas dans mon code ou il y a une tel erreur :- (

Il plante à partir de 89684 mots vérifié dans 5 dico et à partir du sixième ............. c'est mort!


-----------------------------------------------------

Dim y As Long


Do

Form1.Label3.Caption = "Dico verifie :  " & y & " sur " & Form1.File1.ListCount

DoEvents


Open Form1.Dir1.Path & "" & Form1.File1.List(y) For Input As #1

    Do Until EOF(1)

   

        Line Input #1, tmp

        If Text1.Text = tmp Then

        MsgBox Text1.Text & " = " & tmp

        y = 0

        Close #1

        Exit Sub

        End If


   Loop


Close #1

y = y + 1

If y = Form1.File1.ListCount Then GoTo Fini

Loop


Fini: MsgBox "Aucun résultat!"

y = 0

Close #1



-----------------------------------------------------


C'est mon premier post et j'espère obtenir une réponse à ma questoin :- )

Merci!


PS: J'ai déja cherché sur ce forum pour trouver une solution mais je ne vois toujours pas où peut-être l'erreur chez moi! :- ((

11 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,


Quelle est la ligne qui te donne cette erreur


Avec ce que je vois de ce code je dirais que y prends une valeurs ne pouvant etre contenue dans un long


Mais cela n'explique pas ta valeur de89684.






 






@+, Julien
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Essaye déjà en déclarant i en long, la fonction Len renvoie un long.

Mais ça voudrait dire que ta chaine InString fait plus de 32767 caractères ce qui est un peu surréaliste .

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
5
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
13 juin 2007

Ok ok............ -__- L'erreur ne se trouve pas dans le code que j'ai mis dans un class module!
-----------------------------------------------------
Dim I As Integer
Dim bytBuffer() As Byte
ReDim bytBuffer(Len(InString))
>! For I = 0 To Len(InString) - 1
bytBuffer(I) = Asc(Mid(InString, I + 1, 1))
Next I
StringToArray = bytBuffer
-----------------------------------------------------

En fait le texte qu'on entre dans la TextBox est un mot crypter et donc le programme crypte chaque mot du dico pour trouver lequel correspond à celui qu'on cherche.

Je ne sais pas si le bout de code peut t'aider à régler le problème.

Merci!
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
: casy : Vu que c est un mot crypter on ne sait jamais .
Oui I en Long pour l'instant j vois pas mieux.

@+, Julien
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Bien sur Julien, mais sachant que c'est un mot, que le mot français (en supposant que se sont des mots français) le plus long fait 25 caractères, passer de 25 à 32768 caractères, ça fait un sacré algorithme.

Ou alors c'est une phrase entière qu'il crypte d'un coup, et là déjà ça me surprend un peu moins.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
5
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
13 juin 2007

Merci!!!!! J'avais un mot dans un dico qui faisait + 102000 lettres, merci beaucoup pour vos réponses!

Ciao!
Messages postés
5
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
13 juin 2007

PS: Y-a des mots long, mais c'est du charabia :- D bye bye
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
De rien
Si ton problème est réglé n oublie pas d'appuye sur réponse acceptée sur le ou les post qui ont pu t'aider

@+, Julien
Messages postés
5
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
13 juin 2007

Ah d'accord! Merci encore! Salut!
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
salut,
question lisibilité, le do loop sans condition avec un goto c'est pas top.
et #1, rien ne dit que le fichier n'est pas déjà en accès.
çà évitera aussi des close un peu partout

petite optimisation :
Private Sub Dico() 
    Dim y As Long, FF As Integer, sPath As String, sTmp As String, bFound As Boolean 

    y =  0 
    bFound = False 

    Do While y < Form1.File1.ListCount 
        Form1.Label3.Caption = "Dico verifie :  " & y + 1 & " sur " & Form1.File1.ListCount 
        DoEvents 

        sPath = Form1.Dir1.Path & "" & Form1.File1.List(y) 
        FF = FreeFile 

        Open sPath For Input As #FF 
        Do Until  EOF (FF) 
            Line Input #FF, sTmp 
            If Text1.Text  = sTmp Then 
                MsgBox Text1.Text & " =  " & sTmp 
                bFound = True 
                Exit Do 
            End If 
        Loop 

        Close #FF 
        y = y + 1 
        If bFound Then Exit Do 
    Loop 

'   fin
    MsgBox  IIf (bFound, "trouvé, on est sorti", "aucun résultat !") 
End Sub

<small> Coloration
syntaxique automatique [AFCK]</small>
       

++
<hr size ="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
ps : sPath n'est pas très utile, je l'avais mise pour faire un debug