Programmer avec le langage Linotte
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Programmer avec le langage LinotteConnexion

Besoin d'un conseil sur la programmation en Linotte ?

Le Deal du moment : -20%
(Adhérents Fnac) Enceinte Bluetooth Marshall ...
Voir le deal
199.99 €

descriptionUn problème étrange... EmptyUn problème étrange...

more_horiz
Bonjour,

Avec la version 1.997 et mode compatibilité activé.

Sachant que it & pa sont des acteurs "nombre" (grands rôles) dans la fonction suivante, it semble récupérer la valeur de pa-1, je ne comprends pas pourquoi ? Cela semble lié à l’exécution des lignes :
pb=#(pa-1)
valeurs de s2=valeurs de s2+"|"+page8{pb}

(s2 est un sélecteur)

Voici la fonction concernée :

def :
Rôles :
z est un nombre
r est un nombre valant 0
flag est un nombre valant 0
Actions :
ph=#page0{itp}
Décrémente itp
Convertis page8{0} en pa
Incrémente pa
page8{pa}=#lbl
Incrémente pa
page8{pa}=#ph
page8{0}=#pa
pb=#(pa-1)
valeurs de s2=valeurs de s2+"|"+page8{pb}
pc=entier(ph/1024)
z=ph-1024*pc
Concatène "page", pc dans txt2
Tant que flag != 1,lis
txt=#(<
<
prog>
>
{itz+r+1})
<
<
txt2>
>
{z+r}=#txt
Incrémente r
Si txt == "rtn" alors flag=1
"it="+it!
ferme
it=it+r
"it2="+it!
page8{pa-1}!

"it3="+it!
Débogue
nom="def"
retourne nom

descriptionUn problème étrange... EmptyRE: Un problème étrange...

more_horiz
Dur dur de comprendre Pat.
Ton extrait est technique !
à aucun moment, tu affectes de valeur à it sauf it = it + r. Mais r c'est quoi ?
[attachment=67]

descriptionUn problème étrange... EmptyRE: Un problème étrange...

more_horiz
Technique en effet, mais je n’ai pas encore réussi à reproduire le problème dans un exemple, pire depuis que j’ai redémarré le pc, le comportement de la fonction est encore différent !

Sinon, r est un simple compteur, incrémenté tant que txt est différent de « rtn »

Pour finir, je me demande, si je n’ai pas établi un lien entre la variable it et la variable pa, c’est possible ça ? (si l’on modifie l’une, cela modifie l’autre, vice et versa, enfin parfois).

descriptionUn problème étrange... EmptyRE: Un problème étrange...

more_horiz
pat a écrit:

Pour finir, je me demande, si je n’ai pas établi un lien entre la variable it et la variable pa, c’est possible ça ? (si l’on modifie l’une, cela modifie l’autre, vice et versa, enfin parfois).


Je ne peux pas dire que c'est impossible, même si je ne suis jamais tombé sur ce cas. Je vais suivre cette piste.
Un exemple plus court et fonctionnel serai génial !

descriptionUn problème étrange... EmptyRE: Un problème étrange...

more_horiz
J’ai déjà remarqué qu’en supprimant :
pb=#(pa-1)
valeurs de s2=valeurs de s2+"|"+page8{pb}
it n’est plus parasité !!!
Le tableau affiche :
it=5121
it=5121
it=5121
prog=page5
itz=1
r=0
txt=2
z=0
txt2=page11
it=5121
it=5121
prog=page5
itz=1
r=1
txt=3
z=0
txt2=page11
it=5121
it=5121
prog=page5
itz=1
r=2
txt=4
z=0
txt2=page11
it=5121
it=5121
prog=page5
itz=1
r=3
txt=rtn
z=0
txt2=page11
it=5121
it2=5125

si l’on rétabli les 2 lignes incriminées le tableau affiche :
it=5121
it=5121
it=5121
prog=page5
itz=1
r=0
txt=2
z=0
txt2=page11
it=11263
it=11263
prog=page5
itz=1
r=1
txt=3
z=0
txt2=page11
it=11263
it=11263
prog=page5
itz=1
r=2
txt=4
z=0
txt2=page11
it=11263
it=11263
prog=page5
itz=1
r=3
txt=rtn
z=0
txt2=page11
it=11263
it2=11267

Le comportement quelque peut ératique d'une exécution à l'autre, me fais penser de plus en plus à un problème de vidage de la mémoire...

descriptionUn problème étrange... EmptyRE: Un problème étrange...

more_horiz
Les deux lignes doivent être supprimées pour corriger le bogue ?

descriptionUn problème étrange... EmptyRE: Un problème étrange...

more_horiz
Il semble en effet... Mais pas toujours, il subsiste des problèmes divers et aléatoire.

descriptionUn problème étrange... EmptyRE: Un problème étrange...

more_horiz
J'ai remarqué que l'utilisation "massive" de la ligne suivante peut poser quelques problèmes (problème rencontré lors de la création de mon programme PrototypesEditeur.liv) :

valeurs@s2 = valeurs@s2+"|"+page8{pb}

La ligne précédente va mettre à jour le composant graphique Sélecteur à chaque fois que tu vas ajouter un élément dans le sélecteur (page8{pb}).

Des problèmes de rafraichissements du composant peuvent arriver (parfois, il ne s'affiche pas).

Pour cela, je te conseille d'utiliser la fonction sélecteur.chargeValeurs(casier de textes) qui va charger d'un seul coup tous les éléments de ton sélecteur que tu veux afficher.

Pour cela, regarde bien mon programme PrototypesEditeur.liv, j'utilise une liste mais tu peux utiliser cette fonction avec un sélecteur.

Cpc

descriptionUn problème étrange... EmptyRE: Un problème étrange...

more_horiz
Concatène valeurs de s2,"|"+page8{pb} dans valeurs de s2
Est bien la source du problème, le but de cette instruction est d’ajouter une valeur à celle déjà présente dans le sélecteur, et non de le recharger dans son l’intégralité.
Quoiqu’il en soit, j’ai trouvé une solution spécifique à mon livre, est qui semble stable.

descriptionUn problème étrange... EmptyRE: Un problème étrange...

more_horiz
Bonne nouvelle si une solution de contournement a été trouvée.

Il me reste à trouver et corriger le bogue !

descriptionUn problème étrange... EmptyRE: Un problème étrange...

more_horiz
Je rencontre le même problème dans un autre paragraphe, et là, ma solution de contournement ne fonctionne pas, et évoque s2.chargevaleurs() non plus.
Le problème existe aussi dans un paragraphe n’utilisant pas le sélecteur, mais prenant le contenu d’une boîte à texte.

descriptionUn problème étrange... EmptyRE: Un problème étrange...

more_horiz
Ce soir, je proposerai un version corrigeant un point... mais pas sûr que ça corrige ce problème....

descriptionUn problème étrange... EmptyRe: Un problème étrange...

more_horiz
privacy_tip Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
power_settings_newSe connecter pour répondre