|
|||||||||||||||||||||||||||||||||||||||||||
|
Avant de vous lancer dans la programmation avec AMOS, lisez bien ce petit aperçu de ses problèmes, bogues et diverses erreurs à connaître. De l'utilisation d'AMOS puissance et déboires... Lorsqu'on parle d'AMOS, si certains pensent "jeux", d'autres pensent plutôt "créateur". Je ne ferai point de long discours pour persuader les sceptiques qu'AMOS n'est pas un langage fait uniquement pour les jeux. Je dirai simplement que si AMOS apporte de grandes facilités de programmation des animations, interruptions, son, musique, etc. ça n'empêche pas de faire des choses très sérieuses. Le plus appréciable, c'est le côté créateur : AMOS permet une improvisation sans limites (ou presque). Des défauts, il en a...
Appels ROM Appels des fonctions en ROM (Intcall, Execall...). Ce genre d'appels ne fait pas toujours plaisir à AMOS (surtout avec les versions 1.3 d'AMOS). Il y en a cependant une bonne majorité qui ne plantent pas AMOS. Beaucoup (dont moi) ont sollicité la possibilité de gérer l'environnement Intuition standard à partir d'AMOS, malheureusement, François Lionet semble réticent à ce sujet et a préféré développer un système similaire, propre à AMOS, appelé Interface, inclus dans AMOS Pro (patientons...) et c'est très puissant. Pour les initiés au matériel de l'Amiga, il est cependant possible d'ouvrir et de gérer les entrées/sorties des fenêtres sur le Workbench à partir d'AMOS en utilisant Intcall. Faites tout de même très attention à ce que vous faites car ce genre de manipulations est très dangereux. Chaînes de caractères Habituellement encadrées entre double guillemets ("), cela pose un problème pour placer un double guillemets dans une chaîne : il faut trouver le code ASCII de ce caractère et taper à chaque fois "Machin"+Chr$(xx)+"Truc". De plus, lorsqu'on en met un, on en met souvent un deuxième ! Découverte : l'apostrophe remplace sans problème le double guillemets ! Ainsi, A$=Chr$(xx)+" Machin"+Chr$(xx) devient A$='"Machin"'. Lorsque vous mettez une chaîne entre apostrophes, vous ne pouvez pas mettre d'apostrophe au milieu de la chaîne (comme pour '"'). Autre exemple : si on veut afficher L'utilisation d'un "PC" est un enfer !, on écrit : A$="L'utilisation d'un "+'"PC" est un enfer !' Execute La procédure EXECUTE[] ou EXEC[] fournie avec AMOS 1.34 marche très bien, mais lorsque l'exécutable demandé n'est pas trouvé, on ne reçoit pas de code d'erreur, ce qui fait que lorsqu'on n'obtient pas l'effet attendu, on ne sait pas quoi faire. Voici donc deux ou trois de ces choses à faire. Vérifier que le chemin complet de la commande est bien spécifié car votre commande est cherchée dans c: et dans le répertoire courant mais pas dans les chemins spécifiés par la commande Path (ceci n'est pas un bogue d'AMOS, c'est dû à la fonction d'Intuition appelée). Pour la commande "format" par exemple : EXEC["Sys:System/Format... Vérifiez que la commande existe dans le chemin spécifié, n'allez pas chercher "Format" dans c: (à moins que vous ne l'y ayez mis...). N'oubliez pas les redirections d'entrée-sortie pour les commandes qui utilisent l'entrée et la sortie standard. Exemple : EXEC["Sys:System/Format >NIL: <NIL:... Vous pouvez aussi rediriger vers des fenêtres. Exemple : EXEC["c:Dir >'CON:0/11/640/200/AMOS Dir' Ram:"] exécutera la commande "dir" sur le RAM Disk dans une fenêtre de 640x200 en 0,11 avec le titre "AMOS Dir". Si vous voulez que votre programme n'attende pas la fin d'exécution de la commande appelée, placez "Run >NIL: <NIL:" avant celle-ci. Exemple : lancer la commande "Format" et proposer un petit jeu pour patienter : EXEC["Run>NIL:<NIL: Sys:System/Format drive df0 name empty"] et votre programme peut alors proposer un petit jeu pendant le formatage... A ce niveau, un problème se pose : comment faire pour savoir quand la commande a fini son travail ? Je n'y ai pas réfléchi mais dans le cas de la commande "Format", le code d'erreur renvoyé par Disc Info$ devrait faire l'affaire. Bogues (version 1.34) Il arrive encore qu'un programme compilé donne des valeurs complètement délirantes avec la fonction Val(). Remède : essayez de déclarer vos variables au début du programme ou de votre procédure en leur affectant une valeur par défaut comme A#=0.0 ou A$="" ou A=0. Le compilateur ne faisant qu'une seule passe, ça peut l'aider. Les symptômes persistent : écrivez votre propre procédure VAL[]. En écrivant une telle procédure, j'ai découvert que 10^3 donne bel et bien 1000 mais 10A4 donne 9999,99 ... Aberrant, non ? Ceci vient tout simplement du fait qu'AMOS fait son calcul sur des nombres en simple précision et non pas sur des entiers. A ce sujet, AMOS Pro gère les nombres en double précision. C'est beaucoup plus efficace et 10^14 sous AMOS Pro en double précision donne 100000000000000, ce qui est beaucoup mieux. Il arrive (très rarement) que lorsqu'on affecte le contenu d'une variable à un autre et qu'on modifie cette nouvelle variable, l'ancienne soit aussi modifiée. Exemple concret : supposons que A$="00000", T$=A$ et Mid$(T$,4,1)="x". On se retrouve avec A$="000x0" au lieu de "00000" et T$="000x0". Notez que cet exemple fonctionne parfaitement seul mais souvenez-vous que ce genre d'erreur peut arriver. Dans la plupart des cas, il suffit d'augmenter le "Set Buffer" pour pallier ce problème. Erreurs du manuel Il arrive aussi parfois et bizarrement que l'éditeur vous traite de Syntax Error pour une ligne dont la syntaxe est correcte d'après le manuel. Cas où la syntaxe n'est pas correcte (erreurs du manuel)
Bravo ! Vous avez peut-étre découvert un nouveau bogue. Autres erreurs du manuel Cas des commandes Screen Copy, Cls, Copy. Dans le manuel, on nous dit : Cls couleur,x1,y1 to x2,y2 ou Screen Copy scr,x1,y1,x2,y2 to scr2,x3,y3. x1,y1 et x2,y2 représentent respectivement les coordonnées des coins supérieur gauche et inférieur droit des zones à effacer/copier. Faux ! En fait, x2=x1+largeur de la zone, y2=y1+hauteur de la zone. Par contre, dans le cas de commandes comme Bar et box, x2 et y2 sont bel et bien les coordonnées du coin inférieur droit soit : x2=x1+largeur-1 et y2=y1+hauteur-1. Conclusion AMOS est vraiment le créateur et nous réserve plus de bonnes surprises que de mauvaises. La plupart des problèmes qu'on rencontre sont rarement insolubles car quelqu'un a peut-être déjà trouvé la solution. Quant à AMOS Pro, on devrait voir avec sa première mise à jour la disparition totale de ces sales bêtes de bogues.
|