IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ PascalConsultez toutes les FAQ

Nombre d'auteurs : 10, nombre de questions : 402, dernière mise à jour : 7 janvier 2018  Ajouter une question

 

Bienvenue dans la F.A.Q. Pascal !

Celle-ci rassemble les réponses aux questions les plus fréquemment posées sur le langage Pascal et tous ses outils de programmation. Si elle n'a pas pour vocation de répondre à toutes les interrogations possibles, elle reste une bonne base de connaissances sur le Pascal, et ne demande qu'à être enrichie par vos expériences personnelles.

Nous vous invitons à proposer vos propres questions/réponses directement dans la FAQ ou, si vous souhaitez apporter une modification à une question/réponse existante, à la poster dans le fil de discussion renseigné ci-dessous.

Nous vous souhaitons une bonne lecture !

L'équipe Pascal.

SommaireLes différents compilateursTurbo PascalErreurs d'exécutionErreurs DOS (10)
précédent sommaire suivant
 

Cette erreur est renvoyée par le système lorsqu'une fonction DOS inexistante est appelée. Il s'agit donc d'une fonction non supportée par l'interruption 21h.

Mis à jour le 13 mai 2007 Alcatîz

Cette erreur est déclenchée par le système lorsqu'une des routines suivantes est appelée pour un fichier inexistant :

  • Reset (ouvrir un fichier) ;
  • Append (ouvrir un fichier texte en mode ajout) ;
  • Rename (renommer un fichier) ;
  • Erase (supprimer un fichier).

Pour éviter cette erreur d'exécution, utilisez la directive de compilation {$I-} et récupérez le résultat de l'opération par la fonction IOResult.

Mis à jour le 13 mai 2007 Alcatîz

Cette erreur est déclenchée par le système lorsqu'une des routines suivantes est appelée pour un fichier dont le nom contient un chemin (path) absolu ou relatif, lorsque le chemin contient un nom de répertoire inexistant :

  • Reset (ouvrir un fichier) ;
  • Rewrite (créer un fichier) ;
  • Append (ouvrir un fichier texte en mode ajout) ;
  • Rename (renommer un fichier) ;
  • Erase (supprimer un fichier).

De même, lorsqu'une des routines suivantes est appelée pour un répertoire inexistant :
  • ChDir (changer de répertoire courant) ;
  • MkDir (créer un sous-répertoire) ;
  • RmDir (supprimer un sous-répertoire).

Pour éviter cette erreur d'exécution, utilisez la directive de compilation {$I-} et récupérez le résultat de l'opération par la fonction IOResult.

Mis à jour le 13 mai 2007 Alcatîz

Vous avez ouvert trop de fichiers à la fois. Très souvent, cela est dû au fait que vous avez oublié d'appeler Close dans votre programme. Tout fichier ouvert doit être fermé !

Il se peut aussi que vous tentiez d'ouvrir plus de fichiers que ce qui est autorisé par le système. Dans ce cas, éditez votre fichier Config.sys ou Config.nt et augmentez la valeur mentionnée dans la directive FILES=xx (ou créez cette directive si elle n'existe pas).

Mis à jour le 6 avril 2007 Alcatîz Eric Sigoillot

Cette erreur signifie que l'accès à un fichier vous est refusé par le système.
La cause de l'erreur dépend de la routine appelée :

  • Reset ou Append : vous essayez d'ouvrir en écriture (ou lecture/écriture) un fichier en lecture seule ;
  • Rewrite : soit le répertoire où vous voulez créer le fichier est plein ou en lecture seule, soit vous tentez d'écraser un fichier qui est en lecture seule ;
  • Rename : soit vous essayez de renommer un fichier en lecture seule ou qui se trouve dans un répertoire en lecture seule, soit vous voulez lui donner le nom d'un fichier qui existe déjà ;
  • Erase : vous essayez de supprimer un fichier en lecture seule ou qui se trouve dans un répertoire en lecture seule ;
  • Read ou BlockRead : vous essayez de lire un fichier qui n'est pas ouvert en mode lecture ;
  • Write ou BlockWrite : vous essayez d'écrire dans un fichier qui n'est pas ouvert en mode écriture ;
  • MkDir : soit le répertoire où vous voulez créer le nouveau sous-répertoire est plein ou en lecture seule, soit vous essayez de créer un sous-répertoire dont le nom existe déjà ;
  • RmDir : soit vous essayez de supprimer un sous-répertoire non vide ou occupé, soit vous essayez de supprimer... le répertoire racine !

Par défaut, Reset ouvre un fichier en lecture et en écriture. Par conséquent, avec les options standard, vous ne pourrez jamais ouvrir un fichier en lecture seule, par exemple un fichier sur un CD-ROM.
Afin d'y parvenir, vous devez changer la valeur de la variable FileMode et la mettre à zéro (lecture seule) :

Code delphi : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
  
Var 
  f : File; 
  ... 
Begin 
  ... 
  FileMode := 0;  { On se place en lecture seule } 
  Reset(f); 
  ... 
End.

Mis à jour le 6 avril 2007 Alcatîz Eric Sigoillot

Dans la structure interne des types fichier (qu'on pourrait qualifier de « propriétés internes du fichier »), existe un champ handle, qui contient l'identificateur que le système a attribué au fichier lors de son ouverture ou de sa création. Cet identificateur est utilisé, de manière transparente, par les routines de lecture, écriture et fermeture de fichier.

L'erreur d'exécution 6 ne devrait théoriquement jamais se produire, puisqu'il n'y a aucune raison d'accéder directement aux propriétés internes du fichier.

Si vous souhaitez vous documenter sur la structure interne des types fichier, voyez dans les sources de l'unité DOS :

  • le type TextRec, pour les fichiers texte ;
  • le type FileRec, pour les autres types de fichiers.

Mis à jour le 13 mai 2007 Alcatîz

Cette erreur est renvoyée par Reset ou Append si la valeur de la variable FileMode est invalide. FileMode définit le mode d'ouverture et de partage d'un fichier ; c'est une combinaison logique des valeurs suivantes (en hexadécimal) :

Mode d'ouverture :

  • $00 : lecture seule ;
  • $01 : écriture seul e;
  • $02 : lecture et écriture (par défaut pour Reset et Append).

Mode de partage :
  • $10 : seul le programme actuel peut accéder au fichier ;
  • $20 : en lecture seule pour les autres programmes ;
  • $30 : en écriture seule pour les autres programmes ;
  • $40 : en lecture et écriture pour les autres programmes.

Mode d'héritage :
  • $A0 : les programmes enfants du programme actuel ne peuvent accéder au fichier.

Mis à jour le 13 mai 2007 Alcatîz

La procédure GetDir (qui détermine le répertoire courant sur un lecteur donné) demande comme premier paramètre le n° du lecteur : 1 pour A:, 2 pour B:, 3 pour C:, etc., et 0 pour le lecteur courant.
L'erreur 15 se produit si vous spécifiez un n° de lecteur inexistant.

Mis à jour le 14 mai 2007 Alcatîz

Cette erreur est renvoyée par la procédure RmDir si vous tentez de supprimer le répertoire courant.

Mis à jour le 14 mai 2007 Alcatîz

Cette erreur est renvoyée par la procédure Rename si vous tentez de renommer un fichier en spécifiant une lettre de lecteur différente.

Mis à jour le 14 mai 2007 Alcatîz

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.