BLOCKWRITE |
Écriture d'un bloc |
---|---|
Delphi/Kylix/Lazarus | System |
Syntaxe
Procedure BlockWrite(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 écrit. |
Description
Cette procédure permet d'effectuer l'écriture d'enregistrement dans un fichier.
Remarques
- La procédure BlockWrite écrit Count enregistrements de Buf dans un fichier binaire. Si vous fournissez la variable AmtTransferred, la procédure BlockWrite y entrepose le nombre d'enregistrements réellement écrits dans le fichier. En cas d'erreur de disque plein ou autre, AmtTransferred peut être inférieur à Count. La procédure BlockWrite n'est pas une véritable procédure.
- Si vous ne fournissez pas le paramètre AmtTransferred et que la procédure BlockWrite rencontre une erreur, il signale l'erreur d'entrée/sortie 101 ou le code d'erreur Windows comme une erreur d'entrée/sortie.
- Si le fichier n'est pas ouvert, la procédure BlockWrite 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 la procédure BlockWrite.
- Les deux utilisations les plus courantes de BlockWrite sont d'écrire plusieurs enregistrements à la fois et d'entreposer des structures de données complexes ne s'intégrant pas parfaitement dans un simple fichier typé. Par exemple, pour entreposer une longue chaîne de caractères, vous pouvez écrire la longueur de la chaîne de caractères sous forme de nombre binaire de quatre octets, suivi du contenu de la chaîne de caractères.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :
- Program BlockWriteSamples;
-
- {$APPTYPE CONSOLE}
-
- Uses SysUtils;
-
- Var
- Handle:File;
- Buffer:Array[0..127]of Byte;
- ByteWrite:Integer;
-
- BEGIN
- Assign(Handle,'TEST.BIN');
- Rewrite(Handle,1);
- FillChar(Buffer,SizeOf(Buffer),0);
- Buffer[0] := 71;
- Buffer[1] := 76;
- Buffer[2] := 65;
- Buffer[3] := 68;
- Buffer[4] := 73;
- Buffer[5] := 82;
- BlockWrite(Handle,Buffer,SizeOf(Buffer),ByteWrite);
- Close(Handle);
- END.
on obtiendra le résultat suivant dans le fichier «TEST.BIN» :
GLADIRVoir également
Langage de programmation - Delphi/Kylix/Lazarus - Référence de procédures et fonctions - BlockRead
Langage de programmation - Delphi/Kylix/Lazarus - Référence de procédures et fonctions - 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 - Write
Langage de programmation - Delphi/Kylix/Lazarus - Référence de procédures et fonctions - WriteLn