Page 1 sur 2

le débogueur plante et le logiciel que je fais aussi.

Publié : lun. 12/sept./2016 0:40
par YvesRossignol
Bonjour, après plusieurs mois à faire un programme de calcul de soudure. il me reste trois chose à faire dont la lecture du fichier licence encodé. Mais plus rien ne va. J'ai déplacé la routine Decode au début du programme parce que le compilateur me disait toujours que je n'avais pas initialiser correctement le fichier numero 0. Je sais que ce genre d'erreur est habituellement une faute majeure ou quelques choses de stupide. Je vais penché pour la stupidité.

voici un lien vers une dropbox avec les différents programmes...

https://www.dropbox.com/sh/4a3z2jhx8g1c ... GE18a?dl=0

Merci de votre aide.... le code source pour Decode m'a été donné par quelqu'un du site....

Yves

Re: le débogueur plante et le logiciel que je fais aussi.

Publié : lun. 12/sept./2016 0:43
par YvesRossignol
J'essai de compiler et d'executer et tout plante et disparait de l'écran.... et j'ai rebooter ma machine au cas ou...

Yves

Re: le débogueur plante et le logiciel que je fais aussi.

Publié : lun. 12/sept./2016 3:05
par YvesRossignol
J'ai mis aussi welds1 qui fait planté tout tout tout... ligne 2972 à 2999 environ...

yves

Re: le débogueur plante et le logiciel que je fais aussi.

Publié : lun. 12/sept./2016 7:17
par Zorro
YvesRossignol a écrit : voici un lien vers une dropbox avec les différents programmes...

https://www.dropbox.com/sh/4a3z2jhx8g1c ... GE18a?dl=0
Erreur 404 sur le lien !
Merci de votre aide.... le code source pour Decode m'a été donné par quelqu'un du site....Yves
Qui ? est t'il tant innommable que ça ?
le compilateur me disait toujours que je n'avais pas initialiser correctement le fichier numero 0
avant d'ouvrir un fichier a tu bien fermé les autres (qui pourrai avoir le meme numero ) ??

ça ressemble bien a une erreur d'attribution d'ID , par enumération double
ou carrement par méconnaissance sur le fait qu'on puisse utiliser autre chose que "0" pour ouvrir un fichier ....

tu peux en effet ouvrir et traiter plusieurs fichier a condition que chaque fichier ait son propre ID

par exemple pour 2 fichiers ouvert:

Code : Tout sélectionner

Enumeration
		#File1
		#File2
EndEnumeration

OpenFile(#File1, "toto.txt")
		WriteStringN(#file1,"coucou")		
		OpenFile(#File2, "toto2.txt")
				WriteStringN(#file2,"coucou2")
		CloseFile(#file2)
CloseFile(#file1)

Re: le débogueur plante et le logiciel que je fais aussi.

Publié : lun. 12/sept./2016 7:29
par Marc56
YvesRossignol a écrit :... je n'avais pas initialiser correctement le fichier numero 0. Je sais que ce genre d'erreur est habituellement une faute majeure ou quelques choses de stupide
Contre la fatigue et donc l'inattention:
1. Toujours EnableExplicit en début de code car on a vite fait de faire une faute de frappe 0 et O.
2. Éviter d'utiliser zéro pour les identifiants, car zéro est aussi le chiffre retourné si rien ne s'est passé dans une fonction ou si une variable n'a pas bougée.
3. Utiliser les Enumérations ou des variables pour les identifiants de gadgets ou les handles de fichiers, pas de numéros directs.

(le lien DropBox ne fonctionne pas)

:wink:

Re: le débogueur plante et le logiciel que je fais aussi.

Publié : lun. 12/sept./2016 13:06
par YvesRossignol

Re: le débogueur plante et le logiciel que je fais aussi.

Publié : lun. 12/sept./2016 13:15
par YvesRossignol
Le code source de Decode a été fourni par Zorro. Je m'excuse de l'avoir oublié

Yves

Re: le débogueur plante et le logiciel que je fais aussi.

Publié : lun. 12/sept./2016 13:33
par Mesa
Tout fonctionne bien sous XP32.

J'ai déjà vu ce genre de panne, c'était toujours l'antivirus. Tout allait bien puis du jour au lendemain, le déboggeur se bloquait puis le programme avec un faux positif.
Une piste à suivre...

M.

Re: le débogueur plante et le logiciel que je fais aussi.

Publié : lun. 12/sept./2016 13:52
par falsam
Désactive ton Antivirus car je pense que tu n'as pas exclu PureBasic.

Ton code fonctionne parfois et chaque fois qu'il y a une erreur J'ai l'impression que c'est lié à ton fichier welds.txt.

Au premier lancement de ton appli il y a un plantage car tu cherches à l'ouvrir sans tester son existence. IsFile() est pratique crois moi ^^.

Re: le débogueur plante et le logiciel que je fais aussi.

Publié : lun. 12/sept./2016 14:11
par Marc56
:!: IsFile() est une fonction trompeuse: elle ne teste que l’initialisation correcte de l'objet.

Pour tester l’existence d'un fichier, sans avoir besoin de lui mettre un handle, il faut utilise FileSize()

Qui retourne:
> 0 = Le Fichier Existe
-1 = Fichier Inexistant
-2 = C'est un Répertoire

:wink:

Re: le débogueur plante et le logiciel que je fais aussi.

Publié : lun. 12/sept./2016 23:14
par YvesRossignol
Est-ce qu'on peut avoir des fichiers encore ouvert après un plantage? et comment fait-on pour s'assurer que tout est fermé au début d'un programme

Yves

Re: le débogueur plante et le logiciel que je fais aussi.

Publié : mar. 13/sept./2016 8:58
par Marc56
YvesRossignol a écrit :Est-ce qu'on peut avoir des fichiers encore ouvert après un plantage?
Si le programme planté reste actif, les fichiers qu'il a ouvert en mode écriture (en mode exclusif) et non fermés sont verrouillés (par le système) comme pour tout autre programme.
D'une manière générale il vaut mieux ouvrir et fermer le plus vite possible tout fichier de données.

Pour éviter ça (BSOD sur certains OS) ou message "Le programme ne répond plus" il est essentiel de traquer tout (écritures/ouvertures) à l'aide des fonctions IsXxxx et FileSize()

:idea: Une 'trappe' générale peut aussi être utile pour gérer le reste.
Perso, je commence mes programmes par

Code : Tout sélectionner

EnableExplicite

OnErrorGoto(?Global_Error)
et termine par

Code : Tout sélectionner

Global_Error:
MessageRequester("Error", ErrorMessage(), 16)
Pour ne pas avoir de message de warning lors du débug, je met:

Code : Tout sélectionner

If CountProgramParameters() = 0
    OnErrorGoto(?Global_Error)
EndIf
(en mode développement j'ajoute des paramètres (au gestionnaire de projet) pour activer ou non certaines fonctions)

YvesRossignol a écrit :et comment fait-on pour s'assurer que tout est fermé au début d'un programme
Préférences > Débogueur

[X] Arrêter l'exécution au démarrage du programme (normalement si le programme principale se ferme, les dépendance se ferme aussi)

[X] Arrêter le programme après une erreur

Mais il peut être intéressant de ne pas cocher la deuxième option, car on peut alors vérifier l'état des variaables (simplement en passant le curseur au dessus de chaque variable dans code source) et aussi utiliser Débogueur > Voir les variables. Ceci n'est plus possible si on arrête le programme avec le bouton d'arrêt d'urgence (X)

Re: le débogueur plante et le logiciel que je fais aussi.

Publié : mar. 13/sept./2016 18:17
par YvesRossignol
Bonjour, j'ai mis Enablexplicite mais je ne sais pas comment je doit déclarer EventID,menuID, etc car le compilateur me dit qu'ils sont déclarés sous un autre forme ailleur....

per ardua ad astra


par les difficultés jusqu'aux étoiles....

j'ai commandé un camion d'antidépresseur.... ça doit être une stupidité..... mais je ne la trouve pas.

Yves

Re: le débogueur plante et le logiciel que je fais aussi.

Publié : mar. 13/sept./2016 18:33
par YvesRossignol
En mettant enablexplicite.... j'ai tracké les variables non déclaré, je compile, y marche mais j'ai enlevé des lignes avec des ;.... on continue, en déclarant certaines variables, il semble fonctionner.

je me commande deux caisses de lampions.....

Yves :?

Re: le débogueur plante et le logiciel que je fais aussi.

Publié : mar. 13/sept./2016 19:05
par YvesRossignol
et non ça ne marche pas encore, je vais mettre une énumération pour chaque fichier ouvert.....

Yves