Forum Liberty Basic France
• Index
Un chewin-gum virtuel à qui saura faire fonctionner ce programme.
Ce que le programme doit faire : afficher l'heure en binaire
Les bits du mot binaires sont représentés par des sprites :
Ce qui fonctionne :
Ce qui est là de manière provisoire juste pour voir si ça marche :
Les symptômes de ce qui ne va pas :
Voilà le patient, est-ce grave, docteur ?
Code VB :
Edité pour : branchement sur la temporisation par un GOSUB, comme suggéré par Roland, et ça marche aussi bien, et légère modif au niveau de la conversion en binaire, certains bits conservant leur valeur précédente, qui pouvaient donc être erronée par rapport à la valeur actuelle à afficher.
Edité par Christophe Le 24/12/2019 à 14h34
Ce que le programme doit faire : afficher l'heure en binaire
Les bits du mot binaires sont représentés par des sprites :
- Le bit est à 1, on affiche le sprite
- Le bit est à 0, on cache le sprite
en utilisant "spritevisible"
Ce qui fonctionne :
- création et agencement du fond et des sprites
- temporisation toutes les secondes (je ne sais pas comment mais ça marche)
- lire l'heure et la convertir en binaire
- affecter la valeur de chaque bit au sprite qui lui correspond
Ce qui est là de manière provisoire juste pour voir si ça marche :
- la copie, sur la mainwin, des commandes "spritevisible"
Les symptômes de ce qui ne va pas :
- un sprite incongruement affiché en haut à gauche de la fenêtre
- l'absence de prise en compte de "spritevisible"
- à la fermeture, lorsque "drawsprite" est décommenté dans [pause], le programme ne trouve pas le nom de la fenêtre à laquelle il appartient, et il provoque un méchant "a non-continuable protection violation has occurred. Check ERROR.LOG file." suivi de la bien-connue fenetre qui veut envoyer un rapport à microsoft, puis par la fermeture sans appel des fenêtres du programme et de l'éditeur JB.
Voilà le patient, est-ce grave, docteur ?
Code VB :
'horloge à affichage binaire 'nomainwin 'dimensions du graphicbox ' largeur xt=160 'position du nom des zones (3 zones : heures, minutes et secondes) xs=340 'position centre premier sprite xpassp=70 'pas d'espacement des sprites sur x largeurgb=xs+xpassp*5+xpassp/2+10 ' hauteur hz=80 'hauteur zone hauteurgb=12+3*hz+20 'dimensions de la fenêtre WindowWidth=largeurgb+5 WindowHeight=hauteurgb+30 'couleurs utilisées cfond$="38 125 42" 'couleur de fond de la fenêtre ccara$="230 247 231" 'couleur des inscriptions clame$="100 100 100" 'couleur des lampes éteintes clama$="255 250 200" 'couleur des lampes allumées 'caractères des inscriptions ht=int(hz*2/3) 'hauteur nom des zones hd=int(hz*1/4) 'hauteur donnée 'sprites-lampe nbsprites=18 dim spr(nbsprites,3) '(nbsprites,0)=coord x '(nbsprites,1)=coord y '(nbsprites,2)=etat (0=caché, 1=affiché) rsp=25 'rayon du sprite graphicbox #cf.s, 0, 0, largeurgb, hauteurgb 'ouverture de la fenetre open "capture sprite" for window as #cf print #cf.s, "trapclose [fin]" print #cf.s, "down" print #cf.s, "fill ";cfond$ 'fond ns=0 'numero du sprite en cours de définition for a=1 to 3 'affichage du nom des zones x=xt:y=80+(a-1)*hz print #cf.s, "font arial 0 ";ht print #cf.s, "color ";ccara$ 'couleur de ligne print #cf.s, "backcolor ";cfond$ 'couleur de remplissage a$=word$("HEURES MINUTES SECONDES",a) print #cf.s, "stringwidth? a$ large" print #cf.s, "place ";x-large/2;" ";y print #cf.s, "\"+a$ 'affichage des lampes x=xs:y=12+(a-1)*hz print #cf.s, "font arial 0 ";hd y1=y y2=y+hd [h] data 32,16,8,4,2,1 restore [h] for b=1 to 6 ' affichage de la valeur du bit au dessus de la lampe correspondante print #cf.s, "color ";ccara$ 'couleur de caractère print #cf.s, "backcolor ";cfond$ 'couleur de fond read a$ print #cf.s, "stringwidth? a$ large" print #cf.s, "place ";x-large/2;" ";y2 print #cf.s, "\"+a$ 'dessin lampes éteintes print #cf.s, "color black" 'couleur du crayon en noir print #cf.s, "backcolor ";clame$ print #cf.s, "place ";x;" ";y+hd+rsp+10 'centre du cercle print #cf.s, "circlefilled ";rsp 'position et état des sprites spr(ns,0)=x-rsp spr(ns,1)=y+hd+10 spr(ns,2)=0 'hem... devraient déjà y être par construction ns=ns+1 'voyant suivant x=x+xpassp next next 'créer le bitmap de fond print #cf.s, "getbmp lefond 0 0 ";largeurgb;" ";hauteurgb 'crééer le bitmap des sprites ' dessin du masque x1=0 y1=0 x2=x1+2*rsp y2=y1+2*rsp print #cf.s, "cls" print #cf.s, "color white" print #cf.s, "backcolor white" print #cf.s, "place ";x1;" ";y1 print #cf.s, "boxfilled ";x2;" ";y2 print #cf.s, "color black" print #cf.s, "backcolor black" print #cf.s, "place ";x1+rsp;" ";y1+rsp 'centre du cercle print #cf.s, "circlefilled ";rsp ' dessin du sprite x3=x1 y3=y2 x4=x2 y4=y3+2*rsp print #cf.s, "place ";x3;" ";y3 print #cf.s, "boxfilled ";x4;" ";y4 print #cf.s, "color ";clama$ print #cf.s, "backcolor ";clama$ print #cf.s, "place ";x3+rsp;" ";y3+rsp print #cf.s, "circlefilled ";rsp ' création du sprite print #cf.s, "getbmp lebitmap ";x1;" ";y1;" ";x4;" ";y4 'pour tous les sprites, on affecte les bitmaps au sprite nommé lesprite + n° de série for a=0 to nbsprites-1 print #cf.s, "addsprite lesprite";str$(a);" lebitmap"; next 'on place le fond de l'écran print #cf.s, "cls" print #cf.s, "background lefond" print #cf.s, "drawsprites" 'on temporise et toutes les secondes on va lire l'heure gosub [pause] wait [pause] timer 0 cls heure$=time$() for b=0 to nbsprites-1:spr(b,2)=0:next 'tous les bits à zéro r=5 for a=1 to 3 n=val(word$(heure$,a,":")) sp=r r=r+6 'qu'on met en tableau 'après l'avoir convertie en binaire while n>=1 spr(sp,2)=n mod 2 n=int(n/2) sp=sp-1 wend next 'pour l'afficher avec les sprites, 'qui représentent les bits 'cls print heure$ for a=0 to nbsprites-1 if spr(a,2)=1 then 'print #cf.s, "spritevisible lesprite";str$(a);" on"; print "spritevisible lesprite";str$(a);" on" else 'print #cf.s, "spritevisible lesprite";str$(a);" off"; print "spritevisible lesprite";str$(a);" off" end if next a 'print #cf.s, "drawsprites"; timer 1000, [pause] wait [fin] unloadbmp "lefond" unloadbmp "lebitmap" close #cf end
Edité pour : branchement sur la temporisation par un GOSUB, comme suggéré par Roland, et ça marche aussi bien, et légère modif au niveau de la conversion en binaire, certains bits conservant leur valeur précédente, qui pouvaient donc être erronée par rapport à la valeur actuelle à afficher.
Edité par Christophe Le 24/12/2019 à 14h34
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Pourquoi ne pas faire un gosub [pause] (plus clair pour le fonctionnement) ?
Et pourquoi ne pas mettre un "drawsprites" après chaque changement d'état des sprites ?
Hey, c'est du LB--> "print #cf.s, "stringwidth? a$ large"
Je testerai plus tard.
Et pourquoi ne pas mettre un "drawsprites" après chaque changement d'état des sprites ?
Hey, c'est du LB--> "print #cf.s, "stringwidth? a$ large"
Je testerai plus tard.
____________________
Roro
Roro
Suite du: 24/12/2019 à 09h13
J'ai externalisée la pause, j'ai mis un bouton "go" en tête de boucle et ça:
Code VB :
Avant le next de ta boucle, et l'heure ne change pas; concluse sans chercher à comprendre: Y a un os dans la boucle.
Et même en mettant un "for x=1 to 20" en tête de boucle l'heure ne bouge pas, ça coince dans la boucle.
J'ai externalisée la pause, j'ai mis un bouton "go" en tête de boucle et ça:
Code VB :
#cf.s, "color white": #cf.s, "backcolor ";cfond$ #cf.s, "place 50 20": #cf.s, "\ ";heure$ gosub [pause]
Avant le next de ta boucle, et l'heure ne change pas; concluse sans chercher à comprendre: Y a un os dans la boucle.
Et même en mettant un "for x=1 to 20" en tête de boucle l'heure ne bouge pas, ça coince dans la boucle.
____________________
Roro
Roro
Oki, je vais essayer de décoincer la boucle et voir ce qu'il y a avant mon "next". Dans la mainwin les heures défilent normalement, c'est juste l'affichage des sprites qui ne se fait pas
Pour le stringwidth, on y a droit depuis la version 2 de JustBasic
Pour le stringwidth, on y a droit depuis la version 2 de JustBasic
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Que je place Code VB :
avant ou après le gosub, rien ne s'affiche, et c'est là l'incompréhension, car cela m'a obligé à mettre toute la mécanique de conversion et d'affichage dans la boucle chargée de la temporisation.
Et c'est dans cette boucle que l'exécution coince en me disant que #cf.s est un "handle" invalide.
Edité par Christophe Le 24/12/2019 à 15h10
#cf.s, "color white": #cf.s, "backcolor ";cfond$ #cf.s, "place 50 20": #cf.s, "\ ";heure$
avant ou après le gosub, rien ne s'affiche, et c'est là l'incompréhension, car cela m'a obligé à mettre toute la mécanique de conversion et d'affichage dans la boucle chargée de la temporisation.
Et c'est dans cette boucle que l'exécution coince en me disant que #cf.s est un "handle" invalide.
Edité par Christophe Le 24/12/2019 à 15h10
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Citation:
Oui j'ai vu ça, j'ai remplacé "#cf" par "#c" et pareil: "#c "invalide
C'est peut-être le while dans le for, je ne vois que ça comme hypothèse.
Je pense que tu a attaqué trop fort sans tester au fur et à mesure de l'avancement; me trompe-je ?.
me disant que #cf est un "handle" invalide.
Oui j'ai vu ça, j'ai remplacé "#cf" par "#c" et pareil: "#c "invalide
C'est peut-être le while dans le for, je ne vois que ça comme hypothèse.
Je pense que tu a attaqué trop fort sans tester au fur et à mesure de l'avancement; me trompe-je ?.
____________________
Roro
Roro
Ugh !
Citation:
J'ai oublié de préciser, pour nos lecteurs qui n'auraient pas testé le programme, que c'est seulement au moment de quitter qu'on a le message du "handle" invalide. Durant l'exécution il n'y a pas de plantage (mais aucun sprite à l'écran...)
Citation:
Pourtant si, j'y suis allé étape par étape : crééer les sprites et le fond, les afficher, leur faire afficher un mot binaire, convertir un nombre de base 10 en base 2, puis l'heure. le projet a achoppé dans la dernière étape - prendre l'heure toutes les secondes - avec des "spritevisible" ignorés, un "drawsprite" qui ne retrouve plus sa fenêtre, et un "timer"auquel je n'ai rien compris.
Citation:
Je ne crois pas, car il est relativement courant de faire des boucles imbriquées, et je suppose qu'il y a longtemps qu'on aurait débusqué le lièvre s'il y en avait un dans cette config. Je penche plutôt pour une utilisation du timer qui sème la pagaille : les instructions des sprites n'agissent plus, et ne retrouvent plus leur fenêtre d'origine lorsqu'on ferme le programme...
Edité par Christophe Le 24/12/2019 à 17h34
Citation:
Et c'est dans cette boucle que l'exécution coince en me disant que #cf.s est un "handle" invalide.
J'ai oublié de préciser, pour nos lecteurs qui n'auraient pas testé le programme, que c'est seulement au moment de quitter qu'on a le message du "handle" invalide. Durant l'exécution il n'y a pas de plantage (mais aucun sprite à l'écran...)
Citation:
Je pense que tu a attaqué trop fort sans tester au fur et à mesure de l'avancement
Pourtant si, j'y suis allé étape par étape : crééer les sprites et le fond, les afficher, leur faire afficher un mot binaire, convertir un nombre de base 10 en base 2, puis l'heure. le projet a achoppé dans la dernière étape - prendre l'heure toutes les secondes - avec des "spritevisible" ignorés, un "drawsprite" qui ne retrouve plus sa fenêtre, et un "timer"auquel je n'ai rien compris.
Citation:
C'est peut-être le while dans le for, je ne vois que ça comme hypothèse
Je ne crois pas, car il est relativement courant de faire des boucles imbriquées, et je suppose qu'il y a longtemps qu'on aurait débusqué le lièvre s'il y en avait un dans cette config. Je penche plutôt pour une utilisation du timer qui sème la pagaille : les instructions des sprites n'agissent plus, et ne retrouvent plus leur fenêtre d'origine lorsqu'on ferme le programme...
Edité par Christophe Le 24/12/2019 à 17h34
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Citation:
ça, c'est pas impossible, il faudrait arriver à faire fonctionner avec la procédure "normale" (gosub [pause])
EDIT: Je cherche en vain dans la doc l'instruc: "savebmp"; je suis sûr qu'elle existe je l'ai déjà utilisée; mais elle est introuvable.
une utilisation du timer qui sème la pagaille
ça, c'est pas impossible, il faudrait arriver à faire fonctionner avec la procédure "normale" (gosub [pause])
EDIT: Je cherche en vain dans la doc l'instruc: "savebmp"; je suis sûr qu'elle existe je l'ai déjà utilisée; mais elle est introuvable.
____________________
Roro
Roro
Surtout que c'est "bmpsave". Un coup de fatigue ? 
J'ai allumé la télé : il n'y a que des chants de noël, j'suis sûr qu'on me cache encore quelque chose.

Je n'ai plus guère le temps de me pencher sur notre basic dans les heures qui viennent.
Bon Noël, Roland et les autres
à+

J'ai allumé la télé : il n'y a que des chants de noël, j'suis sûr qu'on me cache encore quelque chose.



Je n'ai plus guère le temps de me pencher sur notre basic dans les heures qui viennent.
Bon Noël, Roland et les autres
à+
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Joyeux Noël à Tous
____________________
Castel
Castel
Citation:
Ah ben voila pourquoi je ne trouvais pas.
Et bonnes fêtes à tous.
EDIT: maintenant que démonstration a été faite de la création de sprite ex nihilo il faudrait peut-être en faire des bmp et extraire la machine infernale du code, histoire d'y voir plus clair.
Surtout que c'est "bmpsave"
Ah ben voila pourquoi je ne trouvais pas.
Et bonnes fêtes à tous.
EDIT: maintenant que démonstration a été faite de la création de sprite ex nihilo il faudrait peut-être en faire des bmp et extraire la machine infernale du code, histoire d'y voir plus clair.
____________________
Roro
Roro
Tiens, pour satisfaire tes désirs, je te prépare un zip pour demain, là je n'ai guère le temps, et je te propose de piocher dans ta collection de sprites via un "filedialog".
En fait j'ai simplifié à l’extrême, en supprimant tout ce qui n'était pas "affichage des sprites", et en remplaçant tous les calculs de dimensionnement des éléments graphiques par des données "en dur"
Par rapport au programme complet :
Il suffira de dé-commenter le timer pour constater le problème.
Code VB :
En fait j'ai simplifié à l’extrême, en supprimant tout ce qui n'était pas "affichage des sprites", et en remplaçant tous les calculs de dimensionnement des éléments graphiques par des données "en dur"
Par rapport au programme complet :
- différence : les instructions graphiques sont prises en compte
- point commun : toujours mon "invalid handle" qui aboutit à la "non-continuable protection violation" au moment de fermer le programme.
Il suffira de dé-commenter le timer pour constater le problème.
Code VB :
'nomainwin 'sprites filedialog "Choisir un sprite","*.bmp",sprite$ if sprite$="" then end else loadbmp "lebitmap", sprite$ graphicbox #f.gb, 0, 0, 600, 400 'ouverture de la fenetre open "affiche et déplace le sprite" for window as #f 'pour sortir de la fenêtre print #f.gb, "trapclose [fin]"; 'générer les graphismes print #f.gb, "down"; print #f.gb, "fill darkgreen"; print #f.gb, "getbmp lefond 0 0 600 400"; 'fond print #f.gb, "addsprite lesprite lebitmap"; 'sprite 'afficher les graphismes print #f.gb, "cls"; print #f.gb, "background lefond"; print #f.gb, "spritexy lesprite 50 50"; print #f.gb, "drawsprites"; 'toutes les secondes, déplacer le sprite 'timer 1000, [top] wait [top] timer 0 print #f.gb, "spritemovexy lesprite 5 5"; print #f.gb, "drawsprites"; timer 1000, [top] wait [fin] unloadbmp "lefond" unloadbmp "lebitmap" close #f end
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
ça marche, mais gloups! y a le #f.gb invalide; le timer est décidément bien réticent
En gosub il est plus compréhensif--> http://libertybasic.fr/forum/topic-554+horloge-binaire.php
Tu me dira combien je te dois de royalties pour le fond.
En gosub il est plus compréhensif--> http://libertybasic.fr/forum/topic-554+horloge-binaire.php
Tu me dira combien je te dois de royalties pour le fond.
____________________
Roro
Roro
Pour le fond, rien d'autre qu'un café, un sucre et une touche de lait
je te répond dans le courant du week-end pour ton horloge sans sprites, qui fait le job, d'ailleurs.
Pour en revenir à notre "invalid handle", j'ai réécrit [top] en ajoutant <print "passe en [top]"> et en mettant en commentaire les instructions concernant les sprites :
Code VB :
et là, je n'ai plus de #f.gb invalide, donc ce sont bien les instructions graphiques qui sèment le bronx.
Autre trouvaille, qui explique pourquoi les instructions graphiques sèment le bronx : on passe en [top] toutes les secondes, ...même quand on a fermé la fenêtre graphique.
Normalement, si on a fermé la fenêtre graphique, on a aussi fermé le programme, puisque le "trapclose" branche sur une section qui décharge les bitmaps, ferme la fenêtre, et met fin au programme avec un "end".
On ne peut pas faire une fermeture de programme plus explicite et plus dans les normes.
Pour essayer de comprendre comment on pouvait fermer la fenêtre sans achever le programme, j'ai complété [fin] avec "timer 0" et, comme témoin de passage, j'ai ajouté <print "fin">, comme ceci :
Code VB :
Eh bien le timer continue de brancher sur [top] toutes les secondes, et à aucun moment le mot "fin" n'apparait dans la mainwin, donc le trapclose ferme bien la fenêtre mais ne branche pas sur la routine de fin.
Et la fenêtre graphique n'existant plus, il est tout à fait normal que vouloir y dessiner quelque chose se traduise par un "Invalid file handle : #f.gb"
Je me sens un peu démuni, et je ne sais pas quoi faire.
Edité par Christophe Le 28/12/2019 à 17h49

Pour en revenir à notre "invalid handle", j'ai réécrit [top] en ajoutant <print "passe en [top]"> et en mettant en commentaire les instructions concernant les sprites :
Code VB :
[top] timer 0 print "passe en [top]" 'print #f.gb, "spritemovexy lesprite 5 5"; 'print #f.gb, "drawsprites"; timer 1000, [top] wait
et là, je n'ai plus de #f.gb invalide, donc ce sont bien les instructions graphiques qui sèment le bronx.
Autre trouvaille, qui explique pourquoi les instructions graphiques sèment le bronx : on passe en [top] toutes les secondes, ...même quand on a fermé la fenêtre graphique.
Normalement, si on a fermé la fenêtre graphique, on a aussi fermé le programme, puisque le "trapclose" branche sur une section qui décharge les bitmaps, ferme la fenêtre, et met fin au programme avec un "end".
On ne peut pas faire une fermeture de programme plus explicite et plus dans les normes.
Pour essayer de comprendre comment on pouvait fermer la fenêtre sans achever le programme, j'ai complété [fin] avec "timer 0" et, comme témoin de passage, j'ai ajouté <print "fin">, comme ceci :
Code VB :
[fin] timer 0 print "fin" unloadbmp "lefond" unloadbmp "lebitmap" close #f end
Eh bien le timer continue de brancher sur [top] toutes les secondes, et à aucun moment le mot "fin" n'apparait dans la mainwin, donc le trapclose ferme bien la fenêtre mais ne branche pas sur la routine de fin.
Et la fenêtre graphique n'existant plus, il est tout à fait normal que vouloir y dessiner quelque chose se traduise par un "Invalid file handle : #f.gb"
Je me sens un peu démuni, et je ne sais pas quoi faire.
Edité par Christophe Le 28/12/2019 à 17h49
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Voici un zip contenant un sprite et la version du programme d'essai avec les modifications citées dans mon précédent post : essai sprite timer
l'envoi à [top] est initialement fait avec un "timer", parce que je me suis inspiré d'une formulation trouvée dans l'aide, mais un "gosub [top] donne le même résultat...
l'envoi à [top] est initialement fait avec un "timer", parce que je me suis inspiré d'une formulation trouvée dans l'aide, mais un "gosub [top] donne le même résultat...
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Le timer doit être considéré comme une interruption (pause- arrêt) du programme.
Code VB :
Toi tu veux tordre le bras du timer, c'est normal qu'il crie.
Dans ce soft on peut voir comment Cassiope à utilisé le timer
Cherche "timer" avec le "find" de "Edit" de l'éditeur
submarine_simulator.zip
Code VB :
[pause] 'on veut une pause (arrêt) timer 1000, [temps] 'démarrage du timer (de la pause) wait [temps] timer 0 'arrêt du timer return ' (reprise du programme)
Toi tu veux tordre le bras du timer, c'est normal qu'il crie.
Dans ce soft on peut voir comment Cassiope à utilisé le timer
Cherche "timer" avec le "find" de "Edit" de l'éditeur
submarine_simulator.zip
____________________
Roro
Roro
J'ai une solution provisoire qui consiste à détecter l'erreur avec "on error goto", mais ce serait nettement mieux que je puisse l'anticiper, plutot que de la détecter après coup.
Voici la modif à faire
Code VB :
Dans [errorHandler] j'aurais dû mettre "timer 0", mais l'instruction est déjà dans [fin]
et voilà ce que dit la mainwin
Code TEXT :
Et là, on a bien le mot "fin" attestant que les bonnes instructions ont été données pour une fermeture propre du programme.
Voici la modif à faire
Code VB :
[top] on error goto [errorHandler] timer 0 print "passe en [top]" print #f.gb, "spritemovexy lesprite 5 5"; print #f.gb, "drawsprites"; timer 1000, [top] wait [errorHandler] print "Error string is " + chr$(34) + Err$ + chr$(34) print "Error number is ";Err goto [fin]
Dans [errorHandler] j'aurais dû mettre "timer 0", mais l'instruction est déjà dans [fin]
et voilà ce que dit la mainwin
Code TEXT :
passe en [top] passe en [top] passe en [top] passe en [top] passe en [top] Error string is "Invalid handle: #f.gb" Error number is 0 fin
Et là, on a bien le mot "fin" attestant que les bonnes instructions ont été données pour une fermeture propre du programme.
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Citation:
Je vais aller voir
Dans ce soft on peut voir comment Cassiope à utilisé le timer
Je vais aller voir
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Je suppose avoir remis les fils à l'endroit en ce qui concerne le timer, mais le problème n'est pas réglé : fermer la fenêtre aboutit toujours sur le crash.
En désespoir de cause, j'ai placé un bouton "quitter" qui pointe sur [fin], et là, ô miracle : fermeture propre et nette du programme, et plus de timer qui tourne encore quand la fenêtre est fermée.
D'accord, on a le bouton qui va bien, mais on peut remercier le "on error goto" quand on ferme la fenêtre en cliquant sur la croix, il y a encore un truc qui ne va pas.
Je soumets ma modif à ta sagacité :
Code VB :
En désespoir de cause, j'ai placé un bouton "quitter" qui pointe sur [fin], et là, ô miracle : fermeture propre et nette du programme, et plus de timer qui tourne encore quand la fenêtre est fermée.
D'accord, on a le bouton qui va bien, mais on peut remercier le "on error goto" quand on ferme la fenêtre en cliquant sur la croix, il y a encore un truc qui ne va pas.
Je soumets ma modif à ta sagacité :
Code VB :
'nomainwin 'sprites loadbmp "lebitmap", "titelumiere.bmp" 'futur fond graphicbox #f.gb, 0, 0, 600, 400 'pour quitter WindowHeight=460 button #f.b, "Quitter", [fin], ul, 150, 410, 100, 20 'ouverture de la fenetre open "affiche et déplace le sprite" for window as #f 'pour sortir de la fenêtre print #f.gb, "trapclose [fin]"; 'génerer les graphismes print #f.gb, "down"; print #f.gb, "fill darkgreen"; print #f.gb, "getbmp lefond 0 0 600 400"; 'fond print #f.gb, "addsprite lesprite lebitmap"; 'sprite 'afficher les graphismes print #f.gb, "cls"; print #f.gb, "background lefond"; print #f.gb, "spritexy lesprite 50 50"; print #f.gb, "drawsprites"; 'toutes les secondes on déplace le sprite [top] on error goto [errorHandler] print "passe en [top]" print #f.gb, "spritemovexy lesprite 5 5"; print #f.gb, "drawsprites"; timer 1000, [top] wait [errorHandler] print "Error string is " + chr$(34) + Err$ + chr$(34) print "Error number is ";Err goto [fin] [fin] timer 0 print "fin" unloadbmp "lefond" unloadbmp "lebitmap" close #f end
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Il est clair qu'il y a un truc que je ne capte pas au sujet de ce timer, j'ai passé trop de temps sur cet essai, et j'ai d'autres activités en souffrance, je reviendrai plus tard. A+
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
• Index
1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie