BLOCKREAD |
Lecture d'un bloc |
---|---|
Turbo Pascal 1+ | System |
Syntaxe
Procedure BlockRead(fich:File; var x;enrs:Integer;var enrs_lus:Integer); | Version 1 à 3 |
Procedure BlockRead(fich:File; var x;enrs:Word;var enrs_lus:Word); | Version 4 à 7 |
Paramètres
Nom | Description |
---|---|
fich | Ce paramètre permet d'indiquer l'identificateur de fichier |
x | Ce paramètre permet d'indiquer le tampon de réception des données |
enrs | Ce paramètre permet d'indiquer le nombre d'enregistrement à lire |
enrs_lus | Ce paramètre retourne le nombre d'enregistrement lu |
Description
Cette instruction permet d'effectuer la lecture d'enregistrement dans un fichier.
Remarques
- Le paramètre fich est une variable de fichier non typée. Mais est une variable quelconque, enrs est une expression de type Word et enrs_lus est une variable de type Word.
- La procédure BlockRead lit enrs ou moins d'enregistrements du fichier fich dans la mémoire, en commençant par le premier octet occupé par x. Le nombre réel d'enregistrements complets lus (inférieur ou égal à enrs) est renvoyé dans le paramètre facultatif Résultat. Si le résultat n'est pas spécifié, une erreur d'entrée/sortie se produira si le nombre lu n'est pas égal à enrs.
- Le bloc entier transféré occupe au plus enrs * RecSize octets, où RecSize est la taille d'enregistrement spécifiée à l'ouverture du fichier (ou 128 si omis). Une erreur se produit si enrs * RecSize est supérieur à 65 535 (64 Ko).
- Le résultat enrs_lus est un paramètre facultatif. Voici comment cela fonctionne : Si le bloc entier a été transféré, le résultat sera égal à enrs dans le retour. Sinon, si le résultat est inférieur à enrs, la fin du fichier a été atteinte avant la fin du transfert. Dans ce cas, si la taille de l'enregistrement du fichier est supérieure à un, enrs_lus renvoie le nombre d'enregistrements complets lus, c'est-à-dire qu'un dernier enregistrement partiel possible n'est pas inclus dans enrs_lus.
- La position actuelle du fichier est avancée par les enregistrements enrs_lus en tant qu'effet de BlockRead.
- Avec la directive {$I-}, la fonction IOResult renvoie 0 si l'opération a réussi, sinon, il retourne un code d'erreur différent de zéro.
- La procédure BlockRead doit obligatoirement lire un fichier déjà être ouvert.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction contenu dans le fichier «BLOCREAD.PAS» :
- Program BlocRead;
-
- Var
- Handle:File;
- Buffer:Array[0..1023]of Char;
- I:Word;
- ByteRead:Word;
-
- BEGIN
- WriteLn('---- Debut du fichier ---- ');
- Assign(Handle,'BLOCREAD.PAS');
- Reset(Handle,1);
- Repeat
- BlockRead(Handle,Buffer,1024,ByteRead);
- For I:=0 to ByteRead do Write(Buffer[I]);
- Until ByteRead < 1024;
- Close(Handle);
- WriteLn('---- Fin du fichier ----');
- END.
on obtiendra le résultat suivant :
---- Debut du fichier ----Program BlocRead;
Var
Handle:File;
Buffer:Array[0..1023]of Char;
I:Word;
ByteRead:Word;
BEGIN
WriteLn('---- Debut du fichier ---- ');
Assign(Handle,'BLOCREAD.PAS');
Reset(Handle,1);
Repeat
BlockRead(Handle,Buffer,1024,ByteRead);
For I:=0 to ByteRead do Write(Buffer[I]);
Until ByteRead < 1024;
Close(Handle);
WriteLn('---- Fin du fichier ----');
END.
---- Fin du fichier ----
Référence
Aide-mémoire de Turbo Pascal versions de 3 à 6, Edition Marabout, De Groote, Virga, 1992, ISBN: 2-501-01833-8, page 108 à 109.
Le grand livre du Turbo & Borland Pascal 7.0, Edition Micro Application, Reiner Scholles, 1993, ISBN: 2-86899-873-9, page 1214.
Dernière mise à jour : Dimanche, le 25 janvier 2015