Vous avez certainement remarqué que l'exemple d'application développé au cours des chapitres précédent clopine pour le moment sur une seule jambe, car au moment de quitter le programme, toutes les données saisies ou calculées sont perdus. A nous de lui conférer la possibilité d'enregistrer durablement. Selon le type des informations contenues dans un fichier, vous aurez à choisir un des trois modes d'accès proposé par Q-Basic. La première étape pour une lecture ou un écriture dans un fichier est l'ouverture de ce fichier au moyen d'un mot clé OPEN. Cette instruction a pour conséquence la mise en place d'un tampon (zone de mémoire intermédiaire) pour la copie des données entre le programme et le fichier. OPEN Fichier [FOR Mode] [Verrou] AS NuméroFichier
Les arguments sont : Les entrées et sortis de fichier sont terminées par le mot clé CLOSE, suivie d'un ou plusieurs numéros d'identifications de fichiers (séparé par des virgules).
Accès Binaire Avec un accès binaire, les informations sont lues octet par octet. Ce type d'accès est le plus souple et le plus économique du point de vue de l'espace mémoire, mais nécessite par contre une bonne connaissance de la signification des données individuelles pour pouvoir les interpréter correctement. Un fichier (TEST.DAT) est ouvert en accès binaire par l'instruction suivante, où intNumFic est le numéro du fichier. OPEN "Test.dat" FOR BINARY AS intNumFic Si le fichier n'existe pas, il est crée par l'instruction. C'est l'instruction PUT qui se charge d'écrire des octets dans un fichier ouvert. La ligne de code : Put intNumFic, 55, ByTest Ecrit le contenu de la variable ByTest dans le fichier identifié par intNumFic, à la position 55. La position dans le fichier est automatiquement déplacée au prochain octet libre. Pour lire des octets dans un fichier, vous utiliserez l'instruction GET, de syntaxe identique. Voici, un petit exemple qui montre comment utilisé ces mots clés. Les fichiers sons, avec l'extension *.WAV contiennent la fréquence d'échantillonnage utilisé lors de leur numérisation, et ceci sous la forme d'une valeur entière commençant en position 25. Ce programme se chargera de lire et d'afficher cette fréquence pour le fichier de votre choix.
Pressez F5
Accès Séquentiel L'accès séquentiel est l'idéal pour les fichiers composé de texte pur (caractères ANSI). A l'ouverture d'un fichier séquentiel, vous aurez à définir le mode d'opération, c'est à dire qu'il s'agit : A - D'une lecture de fichier (FOR INPUT) Après l'ouverture d'un fichier texte pour une lecture, vous pourrez le lire ligne par ligne par l'instruction LINE INPUT # et l'affecter à une variable string. L'instruction lit tous les caractères jusqu'à l'apparition du code de fin de ligne (retour chariot et saut de ligne), mais ne transmet pas ces caractères de formatages à la variable. Au besoin, vous les rajouterez par code comme dans l'exemple suivant :
La fonction EOF (End Of File = fin de fichier), utilisé ici pour la sortie de la boucle, livre en retour TRUE lorsque la fin du fichier est atteinte. Vous vous demandez à quoi servent les commandes CHR$ ? Eh bien, vous devez savoir qu'elles signifient qu'il faut retourner à la ligne. Pour copier un nombre précis de caractères dans une variable, vous ferez appel à la fonction INPUT$. A l'inverse de LINE INPUT #, elle retourne tous les caractères du fichier texte. Voici un exemple de code lisant un fichier séquentiel caractère par caractère :
Pour écrire ou rajouter une chaîne de caractères dans un fichier séquentiel ouvert, c'est l'instruction PRINT # qui sera appelé. Nous allons réaliser un programme qui affichera le contenu du fichier CONGIG.SYS.
Pressez F5
Après l'ouverture du fichier texte qui se trouve dans le répertoire racine du lecteur de démarrage, tous les caractères sont lus et affichés. La fonction LOF (Length Of File = taille du fichier) retourne la taille du fichier ouvert, exprimée en octets, ce qui pour une chaine de caractères correspond au nombre de caractère.
Accès Aléatoire Le fichier avec accès aléatoire se compose d'une suite d'enregistrements de même structure et de même longueur. Un enregistrement est constitué d'un certain nombre de champs, correspondant aux éléments d'un type de donné que vous avez établi. Pour gérer par exemple les numéros de téléphone de vos amis, vous définirez le type de données suivant :
Comme tous les enregistrements ont la même longueur, les variables string du type de données personnalisé seront de longueur fixe. Si la longueur prédéfinis n'est pas remplie par les données saisies, les positions libres seront remplies par des espaces par Q-Basic. Les chaînes de caractères dépassant la longueur fixée seront coupées. L'ouverture d'un fichier à accès aléatoire composé des enregistrements du type que nous venons de déclarer peut se faire par le code suivant :
Les mots clés FOR RANDOM ne sont pas indispensables, car l'accès aléatoire est l'option par défaut de l'instruction OPEN. La longueur d'un enregistrement individuel, en octets, est transmise par la fonction Len. Dans notre exemple, cette fonction retourne la valeur 45. Comme avec l'accès binaire, nous utiliserons l'instruction PUT pour écrire des enregistrements et GET pour les lire. La position dans le fichier est définie par le numéro d'ordre de l'enregistrement correspondant. |
Précédent | Sommaire | Q-Basic | Slasky Software | Liens | Mail | Suivant