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

Résolu
unamed_2 Messages postés 5 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 13 juin 2007 - 24 août 2006 à 10:54
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 24 août 2006 à 11:49
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

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
24 août 2006 à 11:00
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
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
24 août 2006 à 11:14
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 #
3
unamed_2 Messages postés 5 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 13 juin 2007
24 août 2006 à 11:09
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!
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
24 août 2006 à 11:18
: casy : Vu que c est un mot crypter on ne sait jamais .
Oui I en Long pour l'instant j vois pas mieux.

@+, Julien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
24 août 2006 à 11:23
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 #
0
unamed_2 Messages postés 5 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 13 juin 2007
24 août 2006 à 11:24
Merci!!!!! J'avais un mot dans un dico qui faisait + 102000 lettres, merci beaucoup pour vos réponses!

Ciao!
0
unamed_2 Messages postés 5 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 13 juin 2007
24 août 2006 à 11:25
PS: Y-a des mots long, mais c'est du charabia :- D bye bye
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
24 août 2006 à 11:31
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
0
unamed_2 Messages postés 5 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 13 juin 2007
24 août 2006 à 11:34
Ah d'accord! Merci encore! Salut!
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 août 2006 à 11:46
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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 août 2006 à 11:49
ps : sPath n'est pas très utile, je l'avais mise pour faire un debug
0
Rejoignez-nous