Obligement - L'Amiga au maximum

Mercredi 26 septembre 2018 - 06:30  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · 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 en d'autres langues


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Logiciels
 · Jeux
 · Scène démo
 · Divers


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


Contact

David Brunet

Courriel

 


Programmation : GFA Basic - Moniteur de disquette GFA D-Mon (deuxième partie : fonctions dédiées aux fichiers)
(Article écrit par Étienne Mouratila et extrait d'Amiga News Tech - octobre 1990)


Nous avons commencé le mois dernier à mettre au point un mini utilitaire de disquettes, permettant diverses opérations sur les fichiers et sur les secteurs du disque. Ce mois-ci, nous abordons les premières fonctions dédiées aux fichiers.

Avant toute chose, il semble important de rappeler que GFA-Dmon (puisque tel est son nom) n'a, et de loin, pas la prétention d'égaler un programme comme DiskMaster ou DiskCraft. Simplement, il sert d'exemple pour la programmation en GFA Basic d'une part, et celle d'AmigaDOS depuis ce langage d'autre part. Un emploi modeste certes, mais utile tout de même.

Dans ce qui va suivre, nous allons développer trois procédures de type "primaire", c'est-à-dire pas bien compliquées. Elles portent les doux noms de FileView, FileErase et FileRename. Vous noterez que bien que GFA Basic dispose des instructions KILL et NAME AS, nous avons préféré, encore une fois pour des raisons d'illustration, appeler directement AmigaDOS via les fonctions DeleteFile() et Rename() de la dos.library. Cela complique un tout petit peu les choses, puisque les noms des fichiers sont passés sous forme de pointeurs plutôt que directement de chaînes de caractères, mais GFA Basic met à notre disposition la fonction V: qui renvoie l'adresse d'une variable alphanumérique. Exactement ce qu'il nous faut.

FileView

Cette procédure affiche à l'écran le contenu d'un fichier, de préférence texte ASCII, mais un fichier binaire peut également être visualisé de cette manière. Ici de même, nous avons préféré utiliser Open() de la dos.library plutôt qu'OPEN du GFA Basic (la nuance est subtile...) ainsi que Read() et Close() en lieu et place de INPUT # et CLOSE, respectivement.

Les choses sont de fait légèrement plus compliquées, Read() exigeant de savoir combien de caractères elle doit extraire du fichier. Pour nous simplifier toutefois un peu la vie, nous avons limité ce nombre à 1 et construisons une chaîne 1$ qui sera affichée à l'écran dès que sa longueur aura atteint 80 caractères (largeur maximale de l'écran) OU que l'on aura lu un Line-Feed (ASC1110). On passe alors à la ligne suivante, et, toutes les 20 lignes affichées, on demande à l'utilisateur s'il désire poursuivre la visualisation ou bien s'il préfère arrêter là. Dans le second cas, la boucle WHILE... WEND se termine, sinon elle continue jusqu'à ce que Read() ait renvoyé le code 0, signifiant que la fin du fichier a été atteinte.

GFA Basic
GFA Basic

FileRename

Cette procédure sert à donner un nouveau nom à un fichier existant sur la disquette. L'instruction GFA "FILESELECT" est utilisée pour entrer à la fois l'ancien nom du fichier et le nouveau, nous évitant ainsi l'écriture de routines de gestion des gadgets d'Intuition, totalement hors de propos ici.

Ensuite, et de même que dans la procédure précédente, on appelle la dos.library (fonction Rename()) avec comme paramètres les pointeurs sur les deux noms de fichiers, obtenus par la fonction V:. Si tout se passe bien, la variable status% contient la valeur -1, sinon elle contient un code d'erreur que nous affichons dans une ALERT, après avoir pris soin de ramener notre écran devant les autres grâce à la fonction de l'intuition.library ScreenToFront(), ceci au cas où une requête système serait apparue lors de l'exécution de Rename() ("Please insert volume XXXX in any drive", etc.).

GFA Basic

FileErase

La dernière procédure pour ce mois-ci propose d'effacer un fichier du disque, par le biais de la fonction DeleteFile() de la dos.library. Là encore, on aurait très bien pu utiliser l'instruction KILL du GFA Basic, mais bon... Tout comme dans FileRename, la variable status% contient le résultat de l'opération : -1 si tout va bien, un code d'erreur dans le cas contraire, code d'erreur qui est affiché dans une ALERT.

GFA Basic

Insérez donc ces trois petits listings dans le programme principal donné le mois dernier.

See you soon

Voilà, on s'arrêtera là pour aujourd'hui. Ces trois procédures ne sont certes pas bien compliquées, mais j'espère qu'elles vous auront suffisamment mis l'eau à la bouche pour nous retrouver le mois prochain, où nous développerons l'édition hexadécimale/ASCII d'un fichier et commencerons l'étude des fonctions de catalogue. D'ici là, bon courage...


[Retour en haut] / [Retour aux articles] [Article précédent]