IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Programme ne répond plus.


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 51
    Points : 41
    Points
    41
    Par défaut Programme ne répond plus.
    Salut,

    J'ai appli qui ouvre 1 fichier texte d'environ 15 mo, le lit ligne par ligne, le ferme et lit un autre fichier texte. J'ai mis un progress bar sur ma fenetre pour que l'utilisateur puisse voir le déroulement du processus mais lorsque j'execute l'application, le programme cesse de repondre jusqu'à la fin de la lecture des fichiers.

    Qqun pourrait m'indiquer comment évité que le programme cesse de répondre...

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
                Dim con As New ADODB.Connection
                Dim lsDSN As String
     
                'Nous sélectionnons la connection string
                If txtEnvironnement.Text = "Développement" Then
                    lsDSN = "User ID=Username;Password=Pass;Data Source=GEND;"
                Else
                    lsDSN = "User ID=Username;Password=Pass;Data Source=GEND;"
                End If
                'Nous ouvrons la connection
                con.Open lsDSN
                Dim Ligne As String
                Dim Table() As String
                'Nous ouvrons le fichier RADIO
                x = 0
                Open txtRep.Text & "\BWIBIKE" For Input As #1
                ProgressBar1.max = FileLen(txtRep.Text & "\BWIBIKE")
                On Error Resume Next
                Do While Not EOF(1)
                    Line Input #1, Ligne
                    Table() = Split(Replace(Ligne, "'", "''"), ",")
                    sql_stmt = "INSERT INTO CIPC (EXP_DATE, STATUT, TYPE_DESC, NO_SERIE_N1, " & _
                    "NO_SERIE_N2, ITEM, MARQUE, MODELE, COULEUR_N1, COULEUR_N2, IND, " & _
                    "TYPE_OBJET, AJOUT, VITESSE) VALUES (TO_DATE('" & FindInStr(Ligne, 1, 8) & "','yyyymmdd'), '" & Trim(Split(FindInStr(Ligne, 10, 15), ",")(1)) & _
                    "', '" & Trim(Split(FindInStr(Ligne, 26, 43), ",")(1)) & "', '" & Trim(FindInStr(Ligne, 70, 16)) & "', '" & Trim(FindInStr(Ligne, 87, 16)) & _
                    "', '" & Trim(FindInStr(Ligne, 104, 12)) & "', '" & Trim(FindInStr(Ligne, 117, 16)) & "', '" & Trim(FindInStr(Ligne, 134, 12)) & _
                    "', '" & Trim(Split(FindInStr(Ligne, 147, 20), ",")(1)) & "', '" & Trim(Split(FindInStr(Ligne, 168, 20), ",")(1)) & "', '" & Trim(FindInStr(Ligne, 189, 7)) & _
                    "', 'RADIO', TO_DATE('" & Date & "','YYYY-MM-DD'), " & Trim(FindInStr(Ligne, 189, 2)) & ")"
                    con.Execute sql_stmt
                    ProgressBar1.Value = ProgressBar1.Value + 199
                    If Err.Description <> "" Then
                        Open App.Path & "\ERREUR.TXT" For Append As #2
                        Print #2, Now() & " --> " & Err.Description
                        Print #2, sql_stmt
                        Print #2, Ligne
                        Print #2, "-------------------------------------------"
                        Close #2
                        Err.Clear
                    End If
                Loop
                Close #1

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Qqun pourrait m'indiquer comment évité que le programme cesse de répondre...
    Qu'appelles-tu "Cesse de répondre ?"
    Si c'est le progressBar, tu peux mettre une tempo pour le faire avancer, enfin, tu peux essayer
    ProgressBar1.Value = ProgressBar1.Value + 199
    A part ça, ton programme fait tout bien normalement ?

    A+

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    do events

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 51
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par ouskel'n'or
    Qu'appelles-tu "Cesse de répondre ?"
    Elle devient grisse puis le seul bouton qui fonctionne est le x dans le coin droit et quand je clique dans la fenetre du programme, la barre de titre change pour (Ne répond pas)...

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Essaie déjà de mettre un End après Close #1

    Souvent, lorsqu'un programme travaille, la barre de titre affiche "Ne répond pas". Ce n'est pas forcément significatif. Pour un fichier txt, 15 mo est assez important. As-tu essayé d'aller boire un café avant de faire Ctrl Alt Sup ?

    Qu'y a-t-il dans le rapport d'erreurs ?

    A+

  6. #6
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ben oui, je suis d'accord (encore!!) avec Ousk:
    C'est long, d'ouvrir un fichier de15 Mo. Si tu mets un petit Pop-up juste après le Open de ton fichier texte, tu y arrives?

  7. #7
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Je suis d'accord avec les gars. De plus, si tu veux avoir quelque chose qui soit significatif pour montrer la progression, dans le cas d'un fichier texte, j'utiliserais un simple message dans une barre d'état du genre: "Lecture de la ligne 1" et j'incrémenterais le numéro de la ligne dans le message.

    Pour utiliser un progressBar, il faut connaître la valeur maximale à atteindre ce qui est assez difficile à trouver dans le cas des fichers texte, chaque ligne n'ayant pas la même longueur et ne connaissant pas d'avance le nombre de lignes. Tout ce qu'on sait, c'est le nombre d'octets. À la limite, tu peux compter les caractère (un caractère = un octet) d'une ligne et les soustraire du nombre d'octets du fichier...

  8. #8
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par zazaraignée
    Tout ce qu'on sait, c'est le nombre d'octets
    Yes, un p'tit lien :
    http://vb.developpez.com/faq/?page=Fichiers#taille_fic

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 51
    Points : 41
    Points
    41
    Par défaut
    Le programme ne plante pas, il ne repond plus... Si je le laisse aller, il fonctionne sauf que la barre de progression n'est pas visible.

    Essaie déjà de mettre un End après Close #1
    Je ne met pas de end car je refait la meme boucle 5 fois sur 5 fichiers différents.

    Je sais que chaque ligne que je lit fait 199 octets donc pour la progresse bar, je n'ai pas de problème pour l'incrémenter.

    Ce que j'aimerais c'est que le programme n'affiche pas (Ne répond pas...) à l'utilisateur et que l'écran devienne pas grisse...

    Comment déterminer la quantité de mémoire que mon programme à besoin pour rouler sur un pc?

  10. #10
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Mais on a bien compris que le prog n'est pas planté. A mon avis, il est entrain d'ouvrir le fichier texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Open txtRep.Text & "\BWIBIKE" For Input As #1
    quand il met le "ne répond pas".
    Et si tu mets ta ligne "ProgressBar1.max = ... " avant le "Open txtRep.Text", ça affichera la barre et ça fera patienter l'utilisateur. Même si elle ne bouge pas pendant un moment...

  11. #11
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Et si en revenant de ta pause café, ça ne semble toujours rien faire, vérifie s'il n'y a pas une boucle qui tourne à vide, donc indéfiniment... C'est un problème très courant. Tellement que des fois, on n'y pense plus...

  12. #12
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par random
    Doevents
    La réponse de random, quoiqu'un peu succinte, donne je crois la solution : place cette instruction dans ta boucle, après l'affectation de sa nouvelle valeur à ta Progress Bar par exemple, et ça devrait marcher mieux

  13. #13
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 51
    Points : 41
    Points
    41
    Par défaut
    Merci!!! Le DoEvents fonctionne parfaitement!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. mysql_real_connect()_ le programme ne répond plus
    Par wilfryjules dans le forum C++
    Réponses: 2
    Dernier message: 25/01/2014, 21h48
  2. Programme ne répond plus ?
    Par ALEXM dans le forum Access
    Réponses: 29
    Dernier message: 28/06/2007, 21h26
  3. Le dataset.bof ne répond plus.
    Par fplanglois dans le forum Bases de données
    Réponses: 6
    Dernier message: 23/03/2004, 09h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo