Programme ne répond pas mais fonctionne sans affichage.
-
- Messages : 6
- Inscription : jeu. 12/mai/2016 19:16
Re: Programme ne répond pas mais fonctionne sans affichage.
Un grand merci pour ce code qui va me servir de base pour mes projets futurs.
Georges.
Georges.
Re: Programme ne répond pas mais fonctionne sans affichage.
Quelques astuces encore
Pour ne pas avoir à trainer des numéros d'ID (gadgets, ou handles de fichier), laisser PB numéroter automatiquement
Mettre tout ce qui est fixe en constantes et au début du programme.
Ce qui permet de réutiliser dans les messages d'erreur et les debugsOu si on veut modifier plus tard, alors une chaine
ou l'autre présentation de la chaine (.s)
Les deux syntaxes sont valables, les deux peuvent être utilisées ensembles et sont différentes (ex: a$ et a.s)
Utiliser Debug tant qu'on veut (les lignes seront ignorées à la compilation EXE)
Not permet de se passer de « = 0 » (comme en basic ou comme '!' en C)
(note l'insertion de la chaine dans la boite de dialogue)
Comme en C, on peut incrémenter en une passe
Quand il y a beaucoup d'itérations, réduire les affichages intermédiaires qui ralentissent énormément le programme principal.
Si tu as par exemple une boucle de 100, alors ne met à jour la ProgressBar qu'une fois sur 10
Méthode pour ne faire quelque chose qu'une fois sur 10 par exemple(note le .0 pour forcer l'utilisation décimale)
Pour faire encore mieux sur un programme dont une partie travaille beaucoup mais sans intervention de l'utilisateur, on fait tourner le "moteur" dans un thread différent de l'interface utilisateur, ce qui évite les clignotements et les sabliers.
En cas de doute sur la syntaxe d'une commande, surveiller la ligne d'état de l'éditeur qui indique les paramètres à utiliser.
Pour plus d'aide, un clic sur la commande, puis touche F1
Enfin dernier conseil: utiliser EnableExplicite qui force à déclarer toutes les variables. Cela peut paraître pénible, mais ça évite ensuite les erreurs d’inattentivement (deux variables différentes car une mal orthographiée)
and welcome.


Pour ne pas avoir à trainer des numéros d'ID (gadgets, ou handles de fichier), laisser PB numéroter automatiquement
Code : Tout sélectionner
Enumeration
#File_IN
#File_OUT
; ... etc
EndEnumeration
Ce qui permet de réutiliser dans les messages d'erreur et les debugs
Code : Tout sélectionner
#File_Input = "D:\QB64\LIFICH02.TXT"
Code : Tout sélectionner
File_Input$ = "D:\QB64\LIFICH02.TXT"
Code : Tout sélectionner
File_Input.s = "D:\QB64\LIFICH02.TXT"
Utiliser Debug tant qu'on veut (les lignes seront ignorées à la compilation EXE)
Code : Tout sélectionner
Debug "(info) Fichier d'entrée utilisé: " + #File_Input
Code : Tout sélectionner
If Not ReadFile(#File_IN, #File_Input)
; Le fichier d'entrée n'existe pas: Bye!
MessageRequester("Erreur à la lecture.","Le fichier " + #File_Input + " n'existe pas",0)
End ; On peut quitter à n'importe quel moment même dans une procédure
EndIf
Comme en C, on peut incrémenter en une passe
Code : Tout sélectionner
a = a + 1 <=> a + 1 (comme a++ en C)
a = a + 3 <=> a + 3 (comme a += 3 en C)
Si tu as par exemple une boucle de 100, alors ne met à jour la ProgressBar qu'une fois sur 10
Méthode pour ne faire quelque chose qu'une fois sur 10 par exemple
Code : Tout sélectionner
For i = 1 To 100
If i / 10.0 = Int(i / 10)
Debug i
EndIf
Next
Pour faire encore mieux sur un programme dont une partie travaille beaucoup mais sans intervention de l'utilisateur, on fait tourner le "moteur" dans un thread différent de l'interface utilisateur, ce qui évite les clignotements et les sabliers.
En cas de doute sur la syntaxe d'une commande, surveiller la ligne d'état de l'éditeur qui indique les paramètres à utiliser.
Pour plus d'aide, un clic sur la commande, puis touche F1

Enfin dernier conseil: utiliser EnableExplicite qui force à déclarer toutes les variables. Cela peut paraître pénible, mais ça évite ensuite les erreurs d’inattentivement (deux variables différentes car une mal orthographiée)

and welcome.

Re: Programme ne répond pas mais fonctionne sans affichage.
Bonjour
Une fois que a tu a mis EnableExplicite en tout début du code
tu mets ensuite Global devant les variables quand tu les crées
.i est équivalent à integer ( en C ou C++ on écris INT)
exemple :
tu as aussi les tutos en vidéo de Microdevweb :
https://www.youtube.com/watch?v=eBu2KMGBOh0
Une fois que a tu a mis EnableExplicite en tout début du code
tu mets ensuite Global devant les variables quand tu les crées
.i est équivalent à integer ( en C ou C++ on écris INT)
exemple :
Code : Tout sélectionner
EnableExplicite
Global maVariable.i=500,Toto.i=400 etc
tu as aussi les tutos en vidéo de Microdevweb :
https://www.youtube.com/watch?v=eBu2KMGBOh0
Re: Programme ne répond pas mais fonctionne sans affichage.
Euh, non, on ne met pas Global partout pour le plaisirBernie a écrit :Une fois que a tu a mis EnableExplicite en tout début du code
tu mets ensuite Global devant les variables quand tu les crées

Aide sur Global
Description
Global permet à des variables d'être utilisées globalement, pouvant ainsi être accessibles depuis l'intérieur de n'importe quelle procédure. Une valeur par défaut peut être assignée à la variable. Global peut aussi être utilisé avec les tableaux, les listes et les maps.
Les instructions Protected et Static permettent de déclarer une variable locale dans une procédure qui a le même nom qu'une variable globale, sans risque de conflit.
Demo:
Code : Tout sélectionner
EnableExplicit
Global a = 1
Define b = 2
Procedure DemoUtilisationGlobal()
Debug "a = " + a
Debug "b = " + b
EndProcedure
DemoUtilisationGlobal()
Pas de global = variable inconnue dans la procédure.
Ce qui amène aussi à expliquer l'utilisation de Protected (qui permet d'utiliser le même nom)
Code : Tout sélectionner
EnableExplicit
Global a = 1
Procedure DemoUtilisationProtected()
Protected a = 2
Debug "a = " + a ; Affiche a = 2 pourtant a est déjà utilisé, mais hors procedure
EndProcedure
DemoUtilisationProtected()

Re: Programme ne répond pas mais fonctionne sans affichage.
ce que voulait dire c'est quand on utilise EnableExplicit on doit mettre global quand on déclare nos variables c'est plus pratique .
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Programme ne répond pas mais fonctionne sans affichage.
Voir la réponse de Marc ci -dessusBernie a écrit :ce que voulait dire c'est quand on utilise EnableExplicit on doit mettre global quand on déclare nos variables c'est plus pratique .


Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%