FAQ PascalConsultez toutes les FAQ
Nombre d'auteurs : 10, nombre de questions : 402, dernière mise à jour : 7 janvier 2018
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.
- 1. Introduction (5)
-
2. Le langage Pascal
(67)
-
2.1. Les chaînes de caractères de type string
(8)
- Comment accéder à un caractère précis d'une chaîne de caractères ?
- Comment déterminer la longueur d'une chaîne ?
- Comment concaténer (ajouter) deux ou plusieurs chaînes ?
- Comment connaître la position d'une sous-chaîne dans une chaîne ?
- Comment copier un extrait de chaîne de caractères ?
- Comment supprimer une partie de chaîne de caractères ?
- Comment convertir une chaîne en nombre ?
- Comment convertir un nombre en chaîne de caractères ?
-
2.2. Les chaînes de caractères à zéro terminal
(12)
- Qu'est-ce qu'une chaîne AZT ?
- Comment convertir une chaîne AZT en string et vice-versa ?
- Comment affecter une valeur à une chaîne AZT ?
- Comment initialiser une chaîne AZT vide ?
- Comment tronquer une chaîne AZT ?
- Comment déterminer la longueur d'une chaîne AZT ?
- Comment copier une chaîne AZT ?
- Comment comparer deux chaînes AZT ?
- Comment rechercher la position d'une chaîne AZT dans une autre ?
- Comment concaténer (ajouter) deux chaînes AZT ?
- Comment allouer une chaîne AZT dans le tas ?
- Comment utiliser les chaînes AZT avec les instructions standard du Pascal comme WriteLn ?
-
2.3. Les nombres
(9)
- Comment tirer un nombre au hasard ?
- Comment passer du binaire au décimal et vice-versa ?
- Comment transformer un nombre réel en nombre entier ?
- Comment afficher un nombre sous forme hexadécimale ?
- Comment formater l'affichage d'un nombre réel ?
- Comment calculer une puissance d'un nombre ?
- Comment évaluer un polynôme en un point ?
- Comment convertir un entier en base de numération quelconque ?
- Comment obtenir les nombres premiers inférieurs à un entier donné N ?
-
2.4. Les fichiers
(10)
- Comment copier un fichier ?
- Comment déplacer un fichier ?
- Comment supprimer un fichier ?
- Comment renommer un fichier ?
- Comment tester l'existence d'un fichier ?
- Comment rechercher un ou plusieurs fichiers sur disque ?
- Pourquoi ne peut-on ouvrir un fichier alors qu'il existe ?
- Comment créer un dossier (répertoire) ?
- Comment supprimer un dossier (répertoire) ?
- Comment déterminer le nom de volume d'un disque ?
- 2.5. Les erreurs courantes (3)
-
2.6. Généralités
(6)
- Comment marquer une pause dans un programme ?
- Comment détecter les erreurs d'entrées/sorties en temps réel ?
- Comment accéder aux paramètres passés en ligne de commande ?
- Comment récupérer facilement le nom de l'application ?
- Comment désactiver le Ctrl+C et le Ctrl+Break ?
- Comment peut-on passer en mode texte sur 50 lignes ?
- Qu'est-ce qu'un mot réservé ?
- Qu'est-ce qu'un type scalaire ?
- Qu'est-ce qu'un type structuré ?
- A quoi sert la directive packed ?
- Qu'est-ce que le transtypage ?
- Comment déclarer une constante typée de type structuré ?
- Quelle est la différence entre une procédure et une fonction ?
- Comment déclarer des procédures qui s'appellent mutuellement ?
- Deux unités peuvent-elles se référencer mutuellement ?
- Quels sont les modes de transmission d'un paramètre à une procédure ou fonction ?
- Un paramètre transmis par valeur est-il toujours déposé sur la pile ?
- Pourquoi est-il préférable de transmettre un paramètre comme constante plutôt que par valeur ?
- Une fonction peut-elle retourner un résultat de type structuré ?
- Comment simplifier une imbrication de blocs If...then...else ?
- Faut-il mettre un point-virgule à la fin d'une instruction précédant un end ?
- Comment se sert-on de l'instruction goto ?
- Comment utiliser la compilation conditionnelle ?
- Pourquoi peut-il être utile d'inclure de l'Assembleur dans un programme ?
- Comment inclure de l'Assembleur dans un programme ?
-
2.1. Les chaînes de caractères de type string
(8)
-
3. Le fonctionnement du système
(8)
- 3.1. Le fonctionnement du système Généralités (4)
- 3.2. Windows (3)
- 3.3. Linux (1)
-
4. Les différents compilateurs
(322)
-
4.1. Turbo Pascal
(254)
-
4.1.1. Turbo Pascal Généralités
(12)
- Peut-on créer un programme Windows avec Turbo Pascal ?
- Quelles sont les directives de compilation ?
- Quels sont les intervalles de valeurs des types entiers de Turbo Pascal ?
- Comment éviter que l'écran ne défile quand on écrit en bas à droite ?
- Comment détecter l'appui sur les touches étendues du clavier ?
- Comment vider le tampon du clavier ?
- Comment imprimer du texte ?
- Comment imprimer du texte mis en forme ?
- Comment ajouter du son à un programme ?
- Comment initialiser l'unité Graph ?
- Comment exécuter un programme externe ?
- Comment modifier ou éteindre le curseur texte ?
-
4.1.2. Turbo Pascal Installation, configuration et fonctionnement de l'EDI
(9)
- Où télécharger gratuitement Turbo Pascal 7 ?
- Comment installer Turbo Pascal sous Windows XP ou Windows 2000 ?
- Comment puis-je passer rapidement d'une fenêtre de code à une autre ?
- Pourquoi l'éditeur n'applique-t-il pas la coloration syntaxique pour certains fichiers ?
- Comment faire en sorte que l'EDI mémorise la configuration courante ?
- Comment faire en sorte que l'EDI rouvre automatiquement les derniers fichiers utilisés ?
- Comment fixer les répertoires d'ouverture et d'enregistrement ?
- Pourquoi Turbo Pascal ne crée-t-il pas d'exécutable sur le disque ?
- Dois-je absolument utiliser l'EDI pour compiler mes programmes ?
- 4.1.3. Débogueur intégré (4)
- 4.1.4. Unités et bibliothèques spécifiques (4)
-
4.1.5. Programmation avancée en Turbo Pascal
(13)
- Comment allouer plus de mémoire que les 640 kb de mémoire conventionnelle ?
- Comment réduire la mémoire utilisée par un programme ?
- Comment tester si un disque existe sur le système ?
- Comment détecter l'appui sur les touches de contrôle ?
- Comment détecter l'appui sur les touches F11 et F12 ?
- Que signifient appel far et appel near ?
- Comment détourner une interruption ?
- Comment inclure des instructions 32 bits dans un programme ?
- Comment récupérer en Assembleur un paramètre transmis par adresse ?
- Comment une fonction écrite en Assembleur peut-elle retourner une valeur ?
- Comment ajouter un module objet écrit en Assembleur à un programme ?
- Une variable définie dans un module objet peut-elle être utilisée dans le programme ?
- Comment inclure du code écrit en C dans un programme Pascal ?
-
4.1.6. Erreurs de compilation
(163)
- Erreur de compilation 1 - Out of memory
- Erreur de compilation 2 - Identifier expected
- Erreur de compilation 3 - Unknown identifier
- Erreur de compilation 4 - Duplicate identifier
- Erreur de compilation 5 - Syntax error
- Erreur de compilation 6 - Error in real constant
- Erreur de compilation 7 - Error in integer constant
- Erreur de compilation 8 - String constant exceeds line
- Erreur de compilation 10 - Unexpected end of file
- Erreur de compilation 11 - Line too long
- Erreur de compilation 12 - Type identifier expected
- Erreur de compilation 13 - Too many open files
- Erreur de compilation 14 - Invalid file name
- Erreur de compilation 15 - File not found
- Erreur de compilation 16 - Disk full
- Erreur de compilation 17 - Invalid compiler directive
- Erreur de compilation 18 - Too many files
- Erreur de compilation 19 - Undefined type in pointer def
- Erreur de compilation 20 - Variable identifier expected
- Erreur de compilation 21 - Error in type
- Erreur de compilation 22 - Structure too large
- Erreur de compilation 23 - Set base type out of range
- Erreur de compilation 24 - File components may not be files or objects
- Erreur de compilation 25 - Invalid string length
- Erreur de compilation 26 - Type mismatch
- Erreur de compilation 27 - Invalid subrange base type
- Erreur de compilation 28 - Lower bound greater than upper bound
- Erreur de compilation 29 - Ordinal type expected
- Erreur de compilation 30 - Integer constant expected
- Erreur de compilation 31 - Constant expected
- Erreur de compilation 32 - Integer or real constant expected
- Erreur de compilation 33 - Pointer type identifier expected
- Erreur de compilation 34 - Invalid function result type
- Erreur de compilation 35 - Label identifier expected
- Erreur de compilation 36 - BEGIN expected
- Erreur de compilation 37 - END expected
- Erreur de compilation 38 - Integer expression expected
- Erreur de compilation 39 - Ordinal expression expected
- Erreur de compilation 40 - Boolean expression expected
- Erreur de compilation 41 - Operand types do not match operator
- Erreur de compilation 42 - Error in expression
- Erreur de compilation 43 - Illegal assignment
- Erreur de compilation 44 - Field identifier expected
- Erreur de compilation 45 - Object file too large
- Erreur de compilation 46 - Undefined external
- Erreur de compilation 47 - Invalid object file record
- Erreur de compilation 48 - Code segment too large
- Erreur de compilation 49 - Data segment too large
- Erreur de compilation 50 - DO expected
- Erreur de compilation 51 - Invalid PUBLIC definition
- Erreur de compilation 52 - Invalid EXTRN definition
- Erreur de compilation 53 - Too many EXTRN definitions
- Erreur de compilation 54 - OF expected
- Erreur de compilation 55 - INTERFACE expected
- Erreur de compilation 56 - Invalid relocatable reference
- Erreur de compilation 57 - THEN expected
- Erreur de compilation 58 - TO or DOWNTO expected
- Erreur de compilation 59 - Undefined forward
- Erreur de compilation 61 - Invalid typecast
- Erreur de compilation 62 - Division by zero
- Erreur de compilation 63 - Invalid file type
- Erreur de compilation 64 - Cannot Read or Write variables of this type
- Erreur de compilation 65 - Pointer variable expected
- Erreur de compilation 66 - String variable expected
- Erreur de compilation 67 - String expression expected
- Erreur de compilation 68 - Circular unit reference
- Erreur de compilation 69 - Unit name mismatch
- Erreur de compilation 70 - Unit version mismatch
- Erreur de compilation 71 - Internal stack overflow
- Erreur de compilation 72 - Unit file format error
- Erreur de compilation 73 - IMPLEMENTATION expected
- Erreur de compilation 74 - Constant and case types do not match
- Erreur de compilation 75 - Record or object variable expected
- Erreur de compilation 76 - Constant out of range
- Erreur de compilation 77 - File variable expected
- Erreur de compilation 78 - Pointer expression expected
- Erreur de compilation 79 - Integer or real expression expected
- Erreur de compilation 80 - Label not within current block
- Erreur de compilation 81 - Label already defined
- Erreur de compilation 82 - Undefined label in preceding statement part
- Erreur de compilation 83 - Invalid @ argument
- Erreur de compilation 84 - UNIT expected
- Erreur de compilation 85 - ";" expected
- Erreur de compilation 86 - ":" expected
- Erreur de compilation 87 - "," expected
- Erreur de compilation 88 - "(" expected
- Erreur de compilation 89 - ")" expected
- Erreur de compilation 90 - "=" expected
- Erreur de compilation 91 - ":=" expected
- Erreur de compilation 92 - "[" or "(." expected
- Erreur de compilation 93 - "]" or ".)" expected
- Erreur de compilation 94 - "." expected
- Erreur de compilation 95 - ".." expected
- Erreur de compilation 96 - Too many variables
- Erreur de compilation 97 - Invalid FOR control variable
- Erreur de compilation 98 - Integer variable expected
- Erreur de compilation 99 - File and procedure types are not allowed here
- Erreur de compilation 100 - String length mismatch
- Erreur de compilation 101 - Invalid ordering of fields
- Erreur de compilation 102 - String constant expected
- Erreur de compilation 103 - Integer or real variable expected
- Erreur de compilation 104 - Ordinal variable expected
- Erreur de compilation 105 - INLINE error
- Erreur de compilation 106 - Character expression expected
- Erreur de compilation 107 - Too many relocation items
- Erreur de compilation 108 - Overflow in arithmetic operation
- Erreur de compilation 109 - No enclosing FOR, WHILE, or REPEAT statement
- Erreur de compilation 110 - Debug information table overflow
- Erreur de compilation 112 - CASE constant out of range
- Erreur de compilation 113 - Error in statement
- Erreur de compilation 114 - Cannot call an interrupt procedure
- Erreur de compilation 116 - Must be in 8087 mode to compile this
- Erreur de compilation 117 - Target address not found
- Erreur de compilation 118 - Include files are not allowed here
- Erreur de compilation 119 - No inherited methods are accessible here
- Erreur de compilation 121 - Invalid qualifier
- Erreur de compilation 122 - Invalid variable reference
- Erreur de compilation 123 - Too many symbols
- Erreur de compilation 124 - Statement part too large
- Erreur de compilation 126 - Files must be var parameters
- Erreur de compilation 127 - Too many conditional symbols
- Erreur de compilation 128 - Misplaced conditional directive
- Erreur de compilation 129 - ENDIF directive missing
- Erreur de compilation 130 - Error in initial conditional defines
- Erreur de compilation 131 - Header does not match previous definition
- Erreur de compilation 133 - Cannot evaluate this expression
- Erreur de compilation 134 - Expression incorrectly terminated
- Erreur de compilation 135 - Invalid format specifier
- Erreur de compilation 136 - Invalid indirect reference
- Erreur de compilation 137 - Structured variables are not allowed here
- Erreur de compilation 138 - Cannot evaluate without System unit
- Erreur de compilation 139 - Cannot access this symbol
- Erreur de compilation 140 - Invalid floating-point operation
- Erreur de compilation 141 - Cannot compile overlays to memory
- Erreur de compilation 142 - Pointer or procedural variable expected
- Erreur de compilation 143 - Invalid procedure or function reference
- Erreur de compilation 144 - Cannot overlay this unit
- Erreur de compilation 145 - Too many nested scopes
- Erreur de compilation 146 - File access denied
- Erreur de compilation 147 - Object type expected
- Erreur de compilation 148 - Local object types are not allowed
- Erreur de compilation 149 - VIRTUAL expected
- Erreur de compilation 150 - Method identifier expected
- Erreur de compilation 151 - Virtual constructors are not allowed
- Erreur de compilation 152 - Constructor identifier expected
- Erreur de compilation 153 - Destructor identifier expected
- Erreur de compilation 154 - Fail only allowed within constructors
- Erreur de compilation 155 - Invalid combination of opcode and operands
- Erreur de compilation 156 - Memory reference expected
- Erreur de compilation 157 - Cannot add or subtract relocatable symbols
- Erreur de compilation 158 - Invalid register combination
- Erreur de compilation 159 - 286/287 instructions are not enabled
- Erreur de compilation 160 - Invalid symbol reference
- Erreur de compilation 161 - Code generation error
- Erreur de compilation 162 - ASM expected
- Erreur de compilation 163 - Duplicate dynamic method index
- Erreur de compilation 164 - Duplicate resource identifier
- Erreur de compilation 165 - Duplicate or invalid export index
- Erreur de compilation 166 - Procedure or function identifier expected
- Erreur de compilation 167 - Cannot export this symbol
- Erreur de compilation 168 - Duplicate export name
- Erreur de compilation 169 - Executable file header too large
- Erreur de compilation 170 - Too many segments
-
4.1.7. Erreurs d'exécution
(47)
-
4.1.7.1. Erreurs DOS
(10)
- Runtime error 1 - Invalid function number
- Runtime error 2 - File not found
- Runtime error 3 - Path not found
- Runtime error 4 - Too many open files
- Runtime error 5 - File access denied
- Runtime error 6 - Invalid file handle
- Runtime error 12 - Invalid file access code
- Runtime error 15 - Invalid drive number
- Runtime error 16 - Cannot remove current directory
- Runtime error 17 - Cannot rename across drives
- 4.1.7.2. Erreurs d'entrées-sorties (7)
-
4.1.7.3. Erreurs critiques
(13)
- Runtime error 150 - Disk is write-protected
- Runtime error 151 - Unknown unit
- Runtime error 152 - Drive not ready
- Runtime error 153 - Unknown command
- Runtime error 154 - CRC error in data
- Runtime error 155 - Bad drive request struct length
- Runtime error 156 - Disk seek error
- Runtime error 157 - Unknown media type
- Runtime error 158 - Sector not found
- Runtime error 159 - Printer out of paper
- Runtime error 160 - Device write fault
- Runtime error 161 - Device read fault
- Runtime error 162 - Hardware failure
-
4.1.7.4. Erreurs fatales
(17)
- Runtime error 200 - Division by zero
- Runtime error 201 - Range check error
- Runtime error 202 - Stack overflow error
- Runtime error 203 - Heap overflow error
- Runtime error 204 - Invalid pointer operation
- Runtime error 205 - Floating point overflow
- Runtime error 206 - Floating point underflow
- Runtime error 207 - Invalid floating point operation
- Runtime error 208 - Overlay manager not installed
- Runtime error 209 - Overlay file read error
- Runtime error 210 - Object not initialized
- Runtime error 211 - Call to abstract method
- Runtime error 212 - Stream registration error
- Runtime error 213 - Collection index out of range
- Runtime error 214 - Collection overflow error
- Runtime error 215 - Arithmetic overflow error
- Runtime error 216 - General protection fault
-
4.1.7.1. Erreurs DOS
(10)
- 4.1.8. Turbo Pascal Bugs (2)
-
4.1.1. Turbo Pascal Généralités
(12)
-
4.2. Free Pascal
(57)
- 4.2.1. Free Pascal Généralités (1)
- 4.2.2. Les entrailles de Free Pascal (1)
- 4.2.3. Plateforme Windows (3)
-
4.2.4. Free Pascal et la Programmation Orientée Objet
(52)
-
4.2.4.1. Notions fondamentales
(19)
- Comment avoir accès à la Programmation Orientée Objet avec Free Pascal ?
- Qu'est-ce qu'une classe en Pascal ?
- Comment déclarer une classe en Pascal ?
- Pourquoi est-il préférable de déclarer une classe en faisant précéder son nom d'un T ?
- Où peut-on déclarer une classe ?
- Qu'est-ce qu'un objet en Pascal ?
- Qu'appelle-t-on l'instance d'une classe en Pascal ?
- Comment instancier une classe en Pascal ?
- Qu'est-ce que le paramètre implicite Self ?
- Qu'est-ce qu'un champ ou un attribut d'une classe en Pascal ?
- Qu'appelle-t-on l'encapsulation des données dans une classe ?
- Qu'appelle-t-on la portée d'un élément d'une classe ?
- Quelle portée appliquer à un élément d'une classe ?
- Faut-il initialiser les champs et les propriétés lors de l'instanciation d'une classe ?
- Qu'est-ce que l'héritage ?
- Qu'est-ce que le polymorphisme ?
- À quoi sert l'opérateur Is ?
- À quoi sert l'opérateur As ?
- Comment retrouver les ancêtres d'une classe ?
-
4.2.4.2. Création et libération
(12)
- Qu'est-ce qu'un constructeur ?
- Comment disposer de plusieurs constructeurs ?
- Quand faut-il hériter dans un constructeur ?
- Comment gérer une erreur lors de l'instanciation d'une classe ?
- Qu'est-ce qu'un destructeur ?
- Pourquoi et comment libérer un objet après son utilisation en Pascal ?
- Quand faut-il hériter dans un destructeur ?
- Pourquoi ne faut-il pas utiliser Destroy pour détruire une instance de classe ?
- A quoi sert Nil pour un objet ?
- Peut-on libérer un objet par une simple affectation à Nil ?
- Comment s'assurer qu'une instance de classe sera toujours libérée ?
- Quand faut-il faire appel à la procédure FreeAndNil ?
-
4.2.4.3. Les méthodes
(12)
- Qu'est-ce qu'une méthode en Pascal ?
- D'où proviennent des méthodes comme Free et Create alors qu'elles ne sont pas déclarées par le programmeur ?
- Qu'appelle-t-on une méthode statique ?
- Qu'appelle-t-on une méthode virtuelle ?
- A quoi sert le mot réservé inherited ?
- A quoi sert la directive override ?
- Qu'est-ce qu'une méthode marquée dynamic ?
- A quoi sert la directive reintroduce ?
- Qu'est-ce qu'une méthode abstraite ?
- Quand utiliser une classe qui comprend des méthodes abstraites ?
- Qu'est-ce qu'une méthode de classe ?
- Qu'est-ce qu'une méthode statique de classe ?
-
4.2.4.4. Les propriétés
(9)
- Qu'est-ce qu'une propriété en Pascal ?
- Quelle est la visibilité par défaut d'un champ dans une classe ?
- Qu'est-ce qu'un setter et un getter ?
- Quelles différences y a-t-il entre une propriété et une variable ?
- A quoi sert le spécificateur stored ?
- A quoi sert le spécificateur default ?
- A quoi set le spécificateur nodefault ?
- Pourquoi certaines propriétés apparaissent-elles avec une simple déclaration sans type ?
- Qu'est-ce qu'une propriété indexée ?
-
4.2.4.1. Notions fondamentales
(19)
-
4.3. Virtual Pascal
(11)
-
4.3.1. Virtual Pascal Généralités
(8)
- Où télécharger l'EDI ?
- Quelles plateformes sont supportées ?
- Virtual Pascal est-il compatible avec Turbo Pascal ?
- Pourquoi est-il impossible de recompiler des sources Turbo Pascal utilisant l'unité Graph ?
- Virtual Pascal est-il compatible avec Delphi ?
- Quels sont les intervalles de valeurs des types entiers de Virtual Pascal ?
- Comment taper les accolades sur un clavier français ?
- Comment permettre l'utilisation de la souris dans l'IDE sous Windows 10 ?
- 4.3.2. Les entrailles de Virtual Pascal (2)
- 4.3.3. Virtual Pascal Plateforme Windows (1)
-
4.3.1. Virtual Pascal Généralités
(8)
-
4.1. Turbo Pascal
(254)
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.