Suivez-nous sur X

|
|
|
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,
ALL
|
|
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
|
|
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
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
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.
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 :

En traduction CanDo, cela donnerait (en gras les commandes 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.

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


|