Posté le 31/03/2016 22:57
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 183 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 01/04/2016 06:49 | #
Je dirais que le problème vient de là :
Str 3->Str 4
StrLeft(Str 1,1)->Str 2
StrShift(Str 1,1)->Str 1
StrSrc(Str 3,Str 2)->E
E+List 1[F]->G
G>=27=>G-27->G
StrRotate(Str 4,G)->Str 4
StrLeft(Str 4,1)->Str 5
StrJoin(Str 6,Str 5)->Str 6 // a ce niveau chaque nouvelle lettre encod�e (str 5) vient se rajouter au message cod�
F=10=>0->F // (str 6)
F<10=>Isz F
StrLen(Str 6)->H
LpWhile H>0 // Le message est compl�tement encod� lorsque la longueur (StrLen) du message original
// devient nulle
Le StrJoin(Str 6, Str 5) ajoute indéfiniment le Str 5 au Str 6 vu que StrLen(Str 6) sera toujours supérieure à 0 et donc que la boucle est une boucle infinie. Au bout d'un moment le Str 6 dépasse la longueur de 255 octets et ça fait une erreur mémoire.
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 01/04/2016 09:55 | #
Bonjour !
Quelques conseils pour ton programme :
tu peux remplacer
Do
StrShift(Str 6,1)->Str 6
Dsz L
LpWhile L!=0
Par tout simplement
Ensuite, il est plus propre de remplacer
"Saisissez votre clef // La clef de chiffrement est saisie ici. elle comporte 10 caract�res
de chiffrement"
?->Str 2
...
A!=10=>Goto 1
par
...
LpWhile A!=10
Enfin ça c'est plus du détail.
N'hésite pas à remplacer
...
Isz B
LpWhile B<11
par
...
Next
Au passage dans cette boucle tes variables B et D ont la même valeur !!!
Pour le reste dsl j'ai pas le temps de tout regarder. Je pense qu'une des raisons de ton problème est la suivante :
La fonction StrShift ne change pas la longueur de la chaîne ! Il décale et rajoute des espaces !
D'autre part tu ajoutes la Str 5 à la Str 6, ta condition se répète tant que la longueur de la Str 6 n'est pas nulle ! La boucle ne s'arrête donc qu'avec une erreur mémoire.
J'espère que ça t'aidera.
AViframar Invité
Citer : Posté le 01/04/2016 19:16 | #
Merci à vous deux pour vos réponses !
en effet @zezombye, j'avais écrit str 6 au lieu de str1
le programme fonctionne maintenant.
Je vais procéder aux améliorations nécessaires (merci @programateur) et ajouter une ou deux fonctionnalités puis je réaliserais le programme de décodage. Je posterais tous ceci sur ce topic quand j'aurais fini !
merci encore...
Citer : Posté le 02/04/2016 16:06 | #
Voila c'est bon mon programme est terminé dans sa version 1.0
http://www.planet-casio.com/Fr/programmes/programme3070-1-Cryptocalypse-aviframar-programme.html
Citer : Posté le 02/04/2016 21:38 | #
Bonjour !
Excuse moi si je n'ai pas encore regardé ton nouveau programme en détails, juste je ne comprends pas bien ce code :
0->Z // l'effacement des données et l'arrêt du programme
Getkey->A
A=44=>Goto 1
LpWhile Z=1
Lbl 1
Parce que du coup si je ne me trompe pas la boucle ne s'effectue qu'une fois... A quoi sert-elle ?
Citer : Posté le 03/04/2016 14:22 | #
En fait la boucle tourne en continue jusqu’à ce que l'utilisateur décide d'y mettre fin en pressant del. En effet, comme les str sont affichés par des Locate, si le nettoyage des données s'effectuait immédiatement, l'utilisateur n'aurait pas le temps de lire le message... Je ne sais pas si mon explication est très claire
Citer : Posté le 03/04/2016 16:04 | #
Oui je comprend le principe mais comme dès le départ Z=0 la boucle
...
LpWhile Z=1
ne tourne qu'une fois...