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.
- 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 ?
Les chaînes de caractères de type string du Pascal peuvent être assimilées à des tableaux de caractères. Comme pour ces derniers, il est possible de les indexer en précisant à la fin la position du caractère auquel on souhaite accéder, le premier caractère portant l'index 1.
Ainsi, si on considère la chaîne s : String, pour connaître le 5e caractère, on écrira s[5] (de type Char).
L'exemple suivant affiche une chaîne en séparant chaque caractère par un tiret :
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | Var s : String; i : Byte; Begin s := 'ABCDEF'; for i := 1 to Length(s) do Write(s[i], '-'); End; |
Le Pascal est doté en standard de la fonction Length (S : String) : Byte pour connaître la longueur d'une chaîne :
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 | Var S : String; Begin S := ''; while Length(S) < 10 do S := S + '!'; End; |
Une première solution est d'utiliser la fonction Concat (s1, s2, ..., sn : String) : String pour ajouter plusieurs chaînes de caractères entre elles :
Code Delphi : | Sélectionner tout |
1 2 3 4 5 6 | Var s : String; Begin s := Concat('Ceci ', 'est ', 'un ', 'exemple.'); End; |
Code Delphi : | Sélectionner tout |
1 2 3 4 5 6 | Var s : String; Begin s := 'Ceci ' + 'est ' + 'un ' + 'exemple.'; End; |
Pour connaître la position d'une sous-chaine (qui peut s'avérer n'être qu'un seul caractère) dans une chaîne, il faut se servir de la fonction Pos (SousChaine, Chaine : String) : Byte;.
La valeur retournée est l'indice du début de la sous-chaîne dans la chaîne. Si la sous-chaîne n'est pas trouvée, alors Pos renverra 0.
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 | Var i : Byte; Begin i := Pos('def','abcdefgh'); { i = 4 } End; |
Pour copier une partie d'une chaîne, on se sert de la fonction Copy (S : String; Debut, Len : Byte), où Debut indique le caractère à partir duquel on souhaite copier la chaîne et Len le nombre de caractères à copier :
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 | Var s : String; Begin s := Copy('ABCDEF',2,3); { s = 'BCD' } End; |
Pour supprimer tout ou partie d'une chaîne, on se sert de la procédure Delete (var S : String; Debut, Len : Byte), où Len indique le nombre de caractères à supprimer en commençant à la position Debut :
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 | Var s : String; Begin s := 'ABCDEF'; Delete(s,2,3); { s = 'AEF' } End; |
Pour convertir une chaîne en nombre, il faut utiliser la procédure Val (S : String; var n; var e : Integer) :
- S est la chaîne à convertir. Pour qu'il n'y ait pas d'erreur, il faut que celle-ci contienne un nombre, qu'il soit entier (décimal ou hexadécimal), ou à virgule ;
- n est la variable qui contiendra le nombre converti. Ce peut être un entier (ShortInt, Byte, Integer, Word, Longint), ou bien un réel (Real, Single, Double, Extended, Comp) ;
- e est le code d'erreur. Si la chaîne S contient bien un nombre et que n est du type attendu, alors e vaut 0. Sinon, e correspond à la position de la première erreur dans la chaîne s.
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Var i : Integer; w : Word; r : Real; e : Integer; Begin Val('123',i,e); { i = 123 ; e = 0 } Val('1.23',r,e); { r = 1.23 ; e = 0 } Val('1.2E3',r,e); { r = 1200 ; e = 0 } Val('-123',w,e); { w = ? ; e = 1 } Val('1.23',i,e); { i = ? ; e = 2 } Val('12a',i,e); { i = ? ; e = 3 } Val('$12A',i,e); { i = $12A ; e = 0 } End. |
Pour convertir un nombre en chaîne, il faut utiliser Str(n:Width:Decimals; var S: String) :
- n est un nombre, entier ou réel ;
- S est la chaîne accueillant le résultat de la conversion ;
- Width représente la taille minimale de la chaîne résultante, avec un alignement à droite. Si Width = 0, alors il n'est pas pris en compte ;
- Decimals représente le nombre de chiffres après la virgule qui doivent être utilisés pour la conversion d'un nombre réel.
Width et Decimalssont des paramètres facultatifs. Toutefois, si vous désirez indiquer Decimals, vous devez nécessairement mettre Width.
Par défaut, la conversion d'un nombre réel s'effectue en utilisant la notation mmmmmmmmmmmmmmE±xxxx, où mmmmmmmmmmmmmm est la mantisse et xxxx l'exposant (par exemple, 12.3 = 1.23000000000000E+0001).
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | Var s : string; Begin Str(123,s); { s = '123' } Str(1.23,s); { s = '1.23000000000000E+0001' } Str(1.23:6:2,s); { s = ' 1.23' } Str(1.23:0:3,s); { s = '1.230' } End. |
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 çaLes 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.