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
|
|
|
|
Programmation : ARexx - Recommendations et modifications de commandes AmigaDOS
(Article écrit par Johan Gerday - janvier 2000)
|
|
Cours n°1
Recommendations (importants).
Modifications de commandes AmigaDOS.
Recommendations
Pour pouvoir utiliser les scripts ARexx, vous devez obligatoirement lancer l'interpréteur RexxMast, même si le script est compilé.
Deux solutions existent :
1) Déplacez le programme RexxMast et son icône dans le répertoire WBStartup.
2) Éditez le fichier s:startup-sequence et s:user-startup
Pour la solution 2) procédez comme suit :
Après la commande "Resident >nil: Execute PURE" ajoutez "Resident >nil: Sys:System/RexxMast PURE".
Créez un nouveau répertoire, par exemple "sources-ARexx" dans votre disquette ou partition système et remplacez "assign >nil: rexx: sys:s"
par "assign >nil: rexx: sys:arexx-sources" pour éviter que le répertoire s: où se trouvent certaines configurations de logiciels
et sauvegardes de scores pour certains jeux ne deviennent un vrai foutoir. Sauvez le fichier.
Dans le fichier s:user-startup, ajoutez : "Run <>nil: RexxMast" qui est plus rapide (réside en mémoire) et est lancé à
chaque démarrage de l'Amiga.
ARexx possède des bibliothèques de fonctions très utiles (l'équivalent des includes pour d'autres langages). Celles-ci peuvent
être chargées à chaque lancement de l'Amiga. C'est un gain de temps lors de l'exécution des programmes.
Pour les charger, éditez votre fichier user-startup et insérez ce qui suit à la fin du fichier.
RXLib >nil: rexxsupport.library 0,-30 ; (0=priorité -30=décalage) le décalage varie avec certaines bibliothèques
RXLib >nil: rexxreqtools.library -5,-30 ; Passerelle pour l'utilisation de reqtools.library © Nico François (un Belge) rexxreqtools.library © Rafaël d'Halleyweyn (encore un Belge).
Les bibliothèques doivent obligatoirement se trouver dans votre répertoire Libs:.
J'ai utilisé ceci car j'utilise fréquement ce langage, ce n'est pas le
meilleur, ce n'est pas hyper rapide, mais c'est utile. On en a marre de taper
des lignes de commandes dans un Shell ? Solution : on prend un éditeur de
texte et on crée un programme ARexx qui le fait pour nous.
Attention : un programme ARexx doit toujours commencer par une ligne de commentaire munie d'un slach et d'un astérisque,
en voici un exemple :
Assez de recommendations, utilisons donc ce langage.
Modifications de commandes AmigaDOS
On va utiliser la commande List all.
ARexx possède la commande
- address command "commande à exécuter". /* Lance une commande AmigaDOS */
- arg variable. /* Récupération d'argument dans un Shell */
- parse arg variable /* Place l'argument dans la variable */
Version n°1 :
/* Full dir */
arg argument_utilisateur
parse var argument_utilisateur
address command "list all "argument_utilisateur
/* Fin du programme (petit mais ça fonctionne) */
exit
|
Sauvez ce script dans (c:fdir), ouvrez un Shell et tapez "protect c:fdir +es"
(exécutable et script)
Ensuite, tapez :
fdir (listage complet du répertoire courant)
fdir c: (listage complet du répertoire c:)
Quittez le Shell, allez dans le répertoire c: et double-cliquez fdir, vous
remarquerez qu'une fenêtre de type Shell s'ouvre pour inscrire les données
fournies par la commande AmigaDOS List.
Nous allons à présent utiliser plusieurs options de la commande List à
l'aide d'un menu, vous allez voir que ce n'est pas plus compliqué que le
Basic, c'est même plus simple.
Version n°2 :
/***************************************************************
Full dir 2
(On reprend les deux première lignes du programme précédent)
****************************************************************/
arg argument_utilisateur
parse var argument_utilisateur
/**************************************************************************
Création du menu :
- On utilise call open() (ouverture d'une fenêtre ou d'un fichier).
- select, when, otherwise, return (If Then Else, en plus fiable, eh oui, If
Then Else est aussi dans le langage ARexx).
- writeln() (Que vois-je !, ne serait-ce point une fonction utilisée en
Pascal ?, Ah que Houi comme dirait l'autre).
- readch() (et de deux - fonction Pascal).
- call (Appel d'une fonction).
- close() (fermeture d'une fenêtre ou d'un fichier).
- une virgule indique que l'on continue sur la ligne suivante.
****************************************************************************/
call open(stdout,"con:0/14/640/128/ Fdir 2 :, version du fanzine Obligement/Close/Wait")
/****************************************************************************
Explications :
stdout - variable (standard Output), stderr = console d'erreur ARexx.
con: - Type de fenêtre (type Shell - Raw: peut aussi être utilisé).
0/14/640/128 - 0 bord gauche de la fenêtre, si on met 20 on déplace le
bord gauche de 20 pixels vers la droite ; 14 descend la fenêtre de 14 pixels ;
640 Longueur de la fenêtre en pixels ; 128 Largeur de la fenêtre en pixels.
Fdir 2 : version du fanzine Obligement - Titre de la fenêtre.
L'option Close - Ajoute un gadget de fermeture à la fenêtre.
L'option Wait - Ne ferme la fenêtre que lorsque l'utilisateur clique le gadget
de fermeture.
****************************************************************************/
call writeln(stdout,"1. All - Toutes les options")
call writeln(stdout,"2. NoDates - Pas de date")
call writeln(stdout,"3. NoHead - Pas d'en-tête")
call writeln(stdout,"4. Quick - Uniquements les noms de fichiers")
call writeln(stdout,"5. Block - Taille en block pas en octets")
/****************************************************************************
Explication :
writeln(stdout,"Texte")
stdout - variable utilisée lors de l'ouverture de notre fenêtre (call
open(variable,"etc.").
"Texte" - texte à afficher dans la fenêtre.
****************************************************************************/
esc="1b"x /* "1b"x = caractère 1b en hexadécimal */
cls=esc||"63"x
/*************************************************************
cls=esc||"63"x
Efface le contenu d'une fenêtre (|| = concaténation) donc "1b"x et "63"x
**************************************************************/
call open(stderr,"con:0/175/250/56/ Tapez le chiffre de l'option désirée : ")
option=readch(stderr,1) /* Lire un caractère dans la fenêtre stderr */
call close(stderr) /* Fermer la fenêtre stderr - on en a plus besoin */
/**************************************
Routines menu :
nous allons devoir créer des sous-routines (type goto en basic) vous allez voir
c'est simple.
***************************************/
select /* Activation de la sélection */
when option=1 then
call list1 /* Si on à choisi l'option 1 goto list1 */
when option=2 then
call list2
when option=3 then
call list3
when option=4 then
call list4
when option=5 then
call list5
otherwise
call erreur /* Option inconnue, faute de frappe (une lettre) */
return /* Retourne le résultat option */
/* Les sous-routines (n'oubliez pas les :) */
list1:
call writeln(stdout,cls)
address command "c:list all "argument_utilisateur
exit
list2:
call writeln(stdout,cls)
address command "c:list nodates "argument_utilisateur
exit
list3:
call writeln(stdout,cls)
address command "c:list nohead "argument_utilisateur
exit
list4:
call writeln(stdout,cls)
address command "c:list Quick "argument_utilisateur
exit
list5:
call writeln(stdout,cls)
address command "c:list block "argument_utilisateur
exit
|
Dans la finale nous utiliserons la bibliothèque de fonction ARexx
rexxreqtools.library pour une requête d'information, une interface graphique
et la sélection du répertoire (du tout à la souris de Mister Miga).
Et voilà, la modification de commandes AmigaDOS n'est pas plus compliquée
que ça. De plus, le script est court et efficace on peut mettre dir aux
oubliettes.
Votre première leçon s'achève ici, Oh non ! Ben si !
|