BLOCKREAD |
Lecture d'un bloc |
---|---|
Delphi/Kylix/Lazarus | System |
Syntaxe
Procedure BlockRead(Var F:File; Var Buf; Count: Integer [; Var AmtTransferred: Integer]); |
Paramètres
Nom | Description |
---|---|
F | Ce paramètre permet d'indiquer l'identificateur de fichier. |
Buf | Ce paramètre permet d'indiquer le tampon de réception des données. |
Count | Ce paramètre permet d'indiquer le nombre d'enregistrement à lire. |
AmtTransferred | Ce paramètre retourne le nombre d'enregistrement lu. |
Description
Cette procédure permet d'effectuer la lecture d'enregistrement dans un fichier.
Remarques
- Appelez la procédure BlockRead pour lire les enregistrements Count d'un fichier binaire dans le paramètre Buf. Si le paramètre F est un fichier non typé, la procédure BlockRead utilise la taille d'enregistrement que vous avez spécifiée lors de l'ouverture du fichier avec Reset. Si vous fournissez la variable AmtTransferred, la procédure BlockRead y entrepose le nombre d'enregistrements réellement lus. En cas d'erreur ou de fin de fichier, AmtTransferred peut être inférieur à Count. La procédure BlockRead n'est pas une véritable procédure.
- Si vous ne fournissez pas le paramètre AmtTransferred et que BlockRead rencontre une erreur ou une fin de fichier, il signale une erreur d'entrée/sortie 100.
- Si le fichier n'est pas ouvert, BlockRead signale l'erreur d'entrée/sortie 103.
- Le paramètre Buf n'est pas un pointeur, mais un paramètre var non typé. Transmettez la variable réelle, pas son adresse. Si vous avez un pointeur vers un tampon alloué dynamiquement, déréférencer le pointeur lors de l'appel de BlockRead.
- Les deux utilisations les plus courantes de BlockRead sont de lire plusieurs enregistrements à la fois et de lire des structures de données complexes ne rentrant pas parfaitement dans un simple fichier typé. Par exemple, supposons qu'un fichier contienne une longueur de chaîne de caractères de quatre octets, suivie du contenu de la chaîne de caractères, et que vous souhaitiez lire les données dans une longue chaîne de caractères. Dans ce cas, vous devez lire la longueur et le contenu de la chaîne de caractères séparément, comme indiqué dans l'exemple.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction contenu dans le fichier «BLOCREAD.DPR» :
- Program BlocRead;
-
- {$APPTYPE CONSOLE}
-
- Uses SysUtils;
-
- Var
- Handle:File;
- Buffer:Array[0..1023]of Char;
- I:Integer;
- ByteRead:Integer;
-
- BEGIN
- WriteLn('---- Debut du fichier ---- ');
- Assign(Handle,'BLOCREAD.DPR');
- 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;
{$APPTYPE CONSOLE}
Uses SysUtils;
Var
Handle:File;
Buffer:Array[0..1023]of Char;
I:Integer;
ByteRead:Integer;
BEGIN
WriteLn('---- Debut du fichier ---- ');
Assign(Handle,'BLOCREAD.DPR');
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 ----
Voir également
Langage de programmation - Delphi/Kylix/Lazarus - Référence de procédures et fonctions - BlockWrite
Langage de programmation - Delphi/Kylix/Lazarus - Références de mots réservés (mots clefs) - File
Langage de programmation - Delphi/Kylix/Lazarus - Référence de procédures et fonctions - Read
Langage de programmation - Delphi/Kylix/Lazarus - Référence de procédures et fonctions - ReadLn
Langage de programmation - Delphi/Kylix/Lazarus - Référence de procédures et fonctions - Reset
Langage de programmation - Delphi/Kylix/Lazarus - Référence de procédures et fonctions - Write
Langage de programmation - Delphi/Kylix/Lazarus - Référence de procédures et fonctions - WriteLn