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 : AMOS - Copie de fichiers (routines FCopy, AP_FCopy et Cprint)
(Article écrit par Denis Bernard et extrait d'Amiga News - mai 1993)
|
|
Cette fois-ci, voyons comment copier des fichiers sans faire appel à la commande CLI "Copy"
et comment, grâce au compilateur, écrire indifféremment dans une fenêtre AMOS ou dans
la fenêtre CLI/Shell courante.
Copie de fichiers
Le principe est simple, il suffit d'ouvrir le fichier source en lecture et le fichier
destination en écriture. Ensuite, lire les données du fichier source et les écrire
directement telles que dans le fichier destination. Au premier abord, la seule
difficulté est la copie de gros fichiers. En fait, il ne faut pas tout lire d'un
seul coup mais par petits blocs de données. L'opération est certes ralentie mais
elle a le gros avantage de ne consommer que très peu de mémoire !
Supposons que vous vouliez copier c:Copy en RAM:, l'appel de la procédure
se fait de la façon suivante :
FCOPY["c:Copy","RAM:Copy"]
|
Notez que cette procédure utilise un tampon de données de 1024 octets pris
dans le tampon de variables d'AMOS. Vous pouvez accélérer la copie en augmentant
la taille de ce tampon, sans oublier qu'il peut être nécessaire d'augmenter
la taille de votre tampon de variables qui ne fait que 8 ko par défaut.
Rien que pour le plaisir : la même procédure programmée en AMOS Pro. On se permet
le luxe de choisir la taille du tampon sans se soucier de celle du tampon
de variables puisqu'on utilise une banque mémoire. Pour appeler la procédure,
il faut lui transmettre un numéro de banque à utiliser et la taille du tampon
de données. Si le numéro de banque est 0, la routine va chercher toute seule,
comme une grande, une banque libre pour travailler. Exemple :
AP_FCOPY["c:Copy","RAM:Copy",O,4096]
|
...copiera le fichier c:Copy en RAM: avec un tampon de 4096 octets et
en utilisant la première banque mémoire libre. Attention : cette
routine ne fonctionne qu'avec AMOS Pro (commande Ssave) !
La routine peut être améliorée en lui faisant réserver automatiquement le
plus de place possible pour que la copie soit plus rapide, ou encore
en faisant en sorte de n'avoir à transmettre que le répertoire de
destination au lieu du nom complet du fichier de destination.
Les joies du compilateur
Celui-ci permet de programmer des utilitaires CLI assez facilement.
Il ne manque plus que la possibilité de faire ses sorties dans la
fenêtre CLI courante. Qu'à cela ne tienne, il y a la bibliothèque
dos.library pour ça ! La fonction Output() de cette bibliothèque donne
l'adresse de la structure FileHandle de la fenêtre courante (ou du
fichier de sortie courant), il suffit ensuite d'appeler la fonction
Write() pour y envoyer du texte. Pas de panique, regardez le listing
et vous comprendrez très vite.
La procédure CPRINT[] du listing d'exemple fait les sorties texte
dans l'écran AMOS si votre programme est interprété et dans la fenêtre
CLI d'où votre programme a été lancé si celui-ci est compilé.
Notez que si votre programme est compilé et que la fonction Output()
renvoie un pointeur nul (programme lancé depuis le Workbench et/ou fenêtre
inexistante), la routine n'imprime rien du tout. Vous pouvez donc
l'améliorer en lui faisant ouvrir sa propre fenêtre CON.
Listings
|