SEEK |
Positionne |
IBM Personal Computer Pascal |
Syntaxe
Procedure SEEK(VAR F; N:WORD);
|
Paramètres
Nom |
Description |
F |
Ce paramètre permet d'indiquer l'identificateur de fichier. |
N |
Ce paramètre permet d'indiquer la nouvelle position dans le fichier. |
Description
Cette procédure permet de fixer la position du pointeur dans un fichier spécifié.
Remarques
- Le paramètre de numéro d'enregistrement N peut également être de type INTEGER ou WORD. Pour les fichiers texte (structure ASCII), les enregistrements
sont des lignes; pour les autres fichiers (structure BINARY), les enregistrements sont des composantes. Les numéros d'enregistrement commencent à un (pas zéro).
Le paramètre F doit avoir un mode DIRECT.
- La procédure SEEK modifie un champ en F afin que le prochain GET ou PUT s'applique au numéro d'enregistrement N.
- Si F est un fichier ASCII, la procédure SEEK définit l'état d'évaluation différée vide.
- Le mode DIRECT doit être défini explicitement avant RESET ou REWRITE pour utiliser la procédure SEEK
sur un fichier.
- SEEK suivi de GET : Si la composant N existe dans le fichier F, alors la position actuelle du fichier est avancée à cette composante, la valeur de cette
composante est affectée à la variable tampon F^ et EOF(F) devient FALSE. L'avancement et l'affectation peuvent être différés en interne.
Si la composante N n'existe pas, la valeur de F^ devient indéfinie. La procédure SEEK est généralement suivi de l'utilisation de la valeur de la variable tampon ou
READ/READLN pour des fichiers ASCII. La procédure SEEK n'est généralement pas suivi de READ pour des fichiers BINARY.
- SEEK suivi des fichiers BINARY avec READ : Puisque READ(F,B) est "B:= F^; GET(F)", l'utilisation de READ entraîne l'attribution de la variable de
tampon actuelle (quelle qu'elle soit) à B et la lecture de l'enregistrement suivant l'enregistrement N. Puisque cette action n'a rien en ce qui concerne la valeur de
l'enregistrement N, il convient de l'éviter.
- SEEK suivi de fichiers ASCII avec READ/READLN Cette situation fonctionne comme on pouvait s'y attendre, grâce à une évaluation Lazy Evaluation. La procédure
SEEK(F, N) définit l'état sur vide de sorte que l'accès à la variable de tampon implicite par READ entraîne la lecture de l'enregistrement N dans le tampon de ligne
interne avant que les caractères ne soient traités par la READ.
- SEEK suivi de PUT: La valeur de la variable tampon F^ est écrite dans le fichier F au numéro d'enregistrement N, la valeur de F^ devient indéfinie
et EOF(F) est définie sur TRUE. La procédure SEEK suivi de PUT est généralement précédé d'un réglage de la valeur de la variable tampon.
- SEEK suivi de fichiers BINARY avec WRITE : Puisque WRITE(F, B) est "F^:= B; PUT(F)", l'utilisation de WRITE après un appel SEEK entraîne
l'écriture de B dans l'enregistrement N, comme on pourrait s'y attendre. Cependant, étant donné que la lecture après la recherche ne fonctionne pas pour les fichiers binaires,
les utilisateurs peuvent souhaiter éviter d'écrire après la recherche pour les fichiers binaires afin de préserver la cohérence syntaxique.
- La procédure SEEK suivi de fichiers ASCII avec WRITE/WRITELN : Cette situation fonctionne comme on peut s'y attendre, en écrivant des
caractères pour enregistrer N. En règle générale, les entrées/sorties de fichiers ASCII en DIRECT fonctionnent comme on pourrait s'y attendre, mais les entrées/sorties
de fichiers BINARY en DIRECT doivent utiliser GET et PUT au lieu de READ et WRITE.
- EOF en mode DIRECT : Une fois qu'un fichier est mis à jour (ou créé) en mode DIRECT, la fin de fichier n'est pas exacte. Ainsi, l'EOF
ne peut pas être utilisé pour détecter la véritable fin de fichier en mode DIRECT. De plus, l'EOF exact du fichier ne sera plus détectable en mode
séquentiel. Dans les fichiers à structure ASCII, certaines données peuvent être inaccessibles en mode SEQUENTIAL, si le fichier a été mis à jour en mode DIRECT et
ré-accédé en utilisant SEQUENTIAL.
Dernière mise à jour : Dimanche, le 19 avril 2020