Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Bug du compilateur. Jeu 27 Juin 2019 - 10:24 | |
| @Jack. Le code suivant, extrait de mon logiciel, pose un petit problème. Le texte de e$ affiché est incorrect ! Le texte affiché sur l'objet alpha n'est visible qu'en partie ! Je ne trouve pas de réponse au problème. - Code:
-
dim e$, double_crlf$, no%, t$, wc%
double_crlf$=chr$(13)+chr$(13)
maximize 0
alpha 2 left 2,screen_x/2-350:top 2,100 width 2,700:height 2,150 font_size 2,32:font_color 2,255,255,128 color 2,0,64,128 font_underline 2 centrer(2,"Apprends une langue gratuitement.",700)
e$="Désirez-vous vraiment quitter cette application ?"+double_crlf$ e$=e$+"Non -> retour à l'accueil." if message_confirmation_yes_no(e$)=1 then terminate end
sub centrer(no%,t$,wc%) ' Centre un texte dans un objet alpha. dim_local sp%,x%,t%
sp%=text_width(" ",no%) : ' La variable sp% correspond à la taille d'un espace. t%=text_width(t$,no%) : ' La variable t% correspond à la taille du texte.
x%=int((wc%-sp%-t%)/sp%*2) : ' Nombre d'espaces à ajouter devant la chaine. if x%>0 then t$=string$(x%," ")+t$+string$(x%," ") : ' On ajoute les espaces devant et après la chaine.
caption no%,t$ end_sub Par contre, le code suivant fonctionne parfaitement. - Code:
-
dim e$, double_crlf$, no%, t$, te$, wc%
double_crlf$=chr$(13)+chr$(13)
maximize 0
alpha 2 left 2,screen_x/2-350:top 2,100 width 2,700:height 2,150 font_size 2,32:font_color 2,255,255,128 color 2,0,64,128 font_underline 2 centrer(2,"Apprends une langue gratuitement.",700)
e$="Désirez-vous vraiment quitter cette application ?"+double_crlf$ e$=e$+"Non -> retour à l'accueil." if message_confirmation_yes_no(e$)=1 then terminate end
sub centrer(no%,t$,wc%) ' Centre un texte dans un objet alpha. dim_local sp%,x%,t%
te$=t$
sp%=text_width(" ",no%) : ' La variable sp% correspond à la taille d'un espace. t%=text_width(te$,no%) : ' La variable t% correspond à la taille du texte.
x%=int((wc%-sp%-t%)/sp%*2) : ' Nombre d'espaces à ajouter devant la chaine. if x%>0 then te$=string$(x%," ")+te$+string$(x%," ") : ' On ajoute les espaces devant et après la chaine.
caption no%,te$ end_sub Il semblerait donc que le passage de paramètres à une sub pose problème. | |
|
Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Bug du compilateur. Ven 28 Juin 2019 - 16:59 | |
| Voici un code minimal qui met en évidence le problème: - Code:
-
dim e$ centrer("Apprends une langue gratuitement.") e$="Désirez-vous vraiment quitter cette application." message e$ terminate end sub centrer(t$) t$=string$(10," ")+t$ end_sub Ce problème a été compris. Il s'agit effectivement d'un bug du compilateur, mais la correction est importante et va demander sans doute quelques jours. _________________ username : panoramic@jack-panoramic password : panoramic123 | |
|
Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Bug du compilateur. Ven 28 Juin 2019 - 17:27 | |
| Bonjour.
@Jack.
Merci de regarder le problème. J'aimerais cependant connaître, pour mon info perso, la raison de ce bug pas évident. | |
|
Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Bug du compilateur. Dim 30 Juin 2019 - 6:00 | |
| Le bug a été corrigé et la correction sera disponible lors de la prochaine sortie du compilateur, d'ici un jour ou deux. Le problème venait d'une confusion dans les pointeurs sur des chaînes de caractères lors du STRING$, de la concaténation et du passage de paramètre à un SUB. _________________ username : panoramic@jack-panoramic password : panoramic123 | |
|
Contenu sponsorisé
| Sujet: Re: Bug du compilateur. | |
| |
|