Obligement - L'Amiga au maximum

Vendredi 24 mars 2017 - 05:17  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Soutien

N'hésitez pas à soutenir le projet Obligement



Contact

David Brunet

Courriel

 


En pratique : CanDo - communication ARexx
(Article écrit par Guy Beteille et extrait d'Amiga News - janvier 1993)


Il n'est pas toujours facile d'expliquer à un débutant ce qu'est CanDo ni à celui-ci de comprendre un listing, perdu qu'il peut être entre la description des objets et les listings des différents scripts et routines... Avec un peu de pratique cela s'arrange très vite...

Dans le souci de répondre à la demande de certains lecteurs, je vais tenter d'être aussi clair que possible, et de faire un bref rappel sur CanDo, et de décrire aussi précisément que possible l'application à des exemples en évitant un listing fastidieux.

Une application CanDo se compose d'une ou plusieurs cartes, sur chaque carte un ou plusieurs objets qui exécutent un script en fonction d'événements prévus à l'avance. Un exemple d'objet c'est un bouton (un gadget) qui exécute une action lorsqu'on le clique avec la souris.

Cartes et objets se construisent à partir d'éditeurs. Ils ne demandent aucune connaissance en programmation. Ce sont les scripts qui doivent être programmés, de même que les routines s'il y a. Le programmeur doit donc se demander quels objets sont nécessaires et quelles actions il doit exécuter en fonction d'événements que génèrent l'application ou l'utilisateur.

Dans l'exemple d'aujourd'hui, pour ne pas le surcharger, je ne fais que citer les différents objets. Tout ce qui concerne leur emplacement, leur taille, leur apparence n'est pas décrit (voir illustration). Libre à chacun d'adopter un autre type de présentation. Cela ne modifiera en rien le fonctionnement de l'application.

CanDo

Généralités sur les communications ARexx

Avant tout, quelques mots sur CanDo et les communications ARexx. CanDo permet de créer des applications qui dialoguent par l'intermédiaire de ports ARexx. Ceci ne veut pas dire qu'il faut pour autant connaître le langage ARexx ou l'utiliser d'une manière ou d'une autre. Ah ? Mais alors... ?

Alors, cela signifie qu'une application peut envoyer des messages à un autre programme et donc dialoguer avec lui, sous réserve que ce programme dispose d'un port ARexx et comprenne les messages reçus. Ces messages sont le plus souvent des commandes qu'exécute le programme.

Comme vous avez pu vous en apercevoir, de plus en plus de programmes sont pourvus d'un port ARexx. Ce port leur permet de recevoir des ordres d'un autre programme (en général d'un programme ARexx, mais pas forcément) qui demandent au programme contacté d'exécuter seul un certain nombre d'actions et éventuellement de renvoyer le résultat de ces actions.

Une application peut aussi recevoir des messages, mais nous aborderons ceci une autre fois. Prenons un exemple tout à fait imaginaire pour comprendre à quoi cela peut servir. Imaginons d'abord que vous ayez un éditeur de texte capable de recevoir des commandes ARexx. Imaginons ensuite que vous ayez souvent des textes à reformater car certaines lignes dépassent 80 caractères. Si vous le faites vous-même vous allez refaire un nombre x de fois les opérations suivantes :
  • a - ouvrir l'éditeur de texte, puis le fichier.
  • b - amener le curseur à la colonne 80 des lignes trop longues.
  • c - taper sur "Entrée".
  • d - continuer les actions a et b jusqu'à la fin du fichier.
  • e - sauver le fichier.
  • f - quitter l'éditeur.
Imaginons que vos fichiers soient longs et très nombreux... La tâche devient alors plus que rébarbative.

Imaginons toujours que votre éditeur comprenne les commandes "ARexx" suivantes :
  • Ouvre "Fichier" -> ouvrir un "fichier".
  • NombreDeLigne -> donner le nombre de lignes du fichier.
  • Ligne -> donner le numéro de la ligne où se trouve le curseur.
  • Caract -> donner le nombre de caractères de la ligne.
  • Col X -> placer le curseur sur la colonne "x".
  • Retour -> couper la ligne.
  • Desc -> descendre le curseur d'une ligne.
  • Sauve "Fichier" -> sauver le "fichier".
Dans ce cas, toujours en imagination, on pourrait concevoir un programme charger d'ordonner à l'éditeur d'exécuter le formatage de vos textes. Ce programme ressemblerait alors à ceci :

CanDo

En traduction CanDo, cela donnerait (en gras les commandes CanDo) :

CanDo

Les commandes CanDo à connaître pour communiquer avec un autre programme sont les suivantes. La commande "SpeakTo" indique le nom du port où seront envoyés les messages. "SendMessage" les envoie sous la forme d'une chaîne de caractères suivie de "ASync" ou "NoResults" qui précise le type de réponse souhaitée... En effet, le programme contacté peut retourner un code d'erreur et même un message. "ASync" signifie que l'application ne doit pas attendre une réponse, "NoResults" demande en retour le code d'erreur. Si rien n'est précisé, le code d'erreur et un message sont attendus. Attention : dans le dernier cas, si le programme contacté ne gère pas le retour de message, votre application attendra en vain une réponse... et bloquera sur cette attente.

Le code d'erreur et le message retourné se trouveront respectivement dans les variables système "MessageErrorCode" et "MessageReturned". Le code d'erreur indique si l'action demandée a pu être exécutée correctement. En règle générale, le code zéro indique que tout s'est bien passé.

Description du programme ArexxManager

Que va faire l'application de ce mois ? Une chose très simple : lister tous les ports du système (y compris les ports non-ARexx) et permettre d'envoyer des messages (et de recevoir leurs réponses éventuelles) au port de son choix.

Une réserve (de taille !) : n'envoyez des messages qu'à des ports ARexx, sinon... plantage assuré ! N'utilisez pas par exemple les ports IDCMP ou Workbench !

Autre réserve : n'envoyez que des messages compris par le programme contacté, cela suppose de connaître ces messages (à vos docs !).

Afin de donner un intérêt supplémentaire, nous allons demander à cette application de pouvoir charger un fichier de messages, ou d'en créer un et le sauver, et de sauver aussi les réponses. Ceci pour pouvoir par exemple reprendre des séquences de commandes ou avoir un rappel de celles-ci. En ce qui concerne les réponses, il n'est pas inutile de pouvoir les sauvegarder car certains programmes donnent eux-mêmes la liste des messages qu'ils comprennent (c'est le cas de SerialManager et ParallelManager fournis avec CanDo lorsqu'ils reçoivent la commande QueryLexicon). De plus, cette application pourra sauvegarder sa configuration.

Comment organiser cette application ? Une seule carte suffit (une seule fenêtre). Dans cette fenêtre, cinq boutons : "Scruter" pour réactualiser la liste des ports, "Envoi" pour envoyer un message, et trois boutons de type "radio" qui permettent de sélectionner le type de réponse attendue. Deux objets champ de saisie, un pour saisir le nom du port sélectionné, l'autre pour saisir une commande à envoyer.

Il y a ensuite trois objets document, un de type "list" pour afficher la liste des ports, et deux de type "mémo" l'un pour pouvoir y taper un ensemble de commandes (c'est un éditeur de texte) et l'autre pour y afficher les réponses aux messages. Pour finir, quelques objets "menus" déroulants dont voici la présentation. Leur fonction est explicite.

CanDo

Nous allons gérer un certain nombre d'événements :
  • Le choix de chaque menu, géré par chaque script "Occurred".
  • Le clic sur les trois boutons.
  • Clic, double-clic et déplacements dans la zone des commandes.
  • Clic et déplacements dans la liste.
  • Retour chariot dans le champ de saisie.
Avec ces bases vous devez comprendre assez facilement la description de cette application. Une dernière précision pour ceux qui ont oublié les explications sur les bases de données : c'est volontairement que le nom de certains objets commence par un point. C'est par ce moyen que CanDo assemble le contenu de ces objets dans une variable "Record". Dans cette application cette technique permet de garder la configuration dans une variable et de la sauver ou de la réouvrir.

Application "ARexx Manager 1.0" - © octobre 1992 G. Beteille

CanDo
CanDo


[Retour en haut] / [Retour aux articles]