Conversion nombre vers chaîne

Si vous ne souhaitez pas imprimer directement mais assembler un nombre quelconque de variables en une chaîne complète, Pascal propose trois méthodes principales de mise en œuvre :

Concaténation via des fonctions de conversion dédiées

***ToStr + concaténation chaîne avec +

Convertissez chaque type de données séparément à l’aide de fonctions de conversion dédiées, puis assemblez les chaînes avec l’opérateur + :

uses SysUtils;

var
  MyInt: Integer;
  MyStr: string;
begin
  MyInt := 123;
  MyStr := 'My int number is ' + IntToStr(MyInt) + ', and the value of Pi is ' + FloatToStr(Pi);
end;Langage du code : JavaScript (javascript)

Fonctions auxiliaires courantes (toutes situées dans l’unité SysUtils) :

  • Nombre vers chaîne : IntToStr, FloatToStr, FormatFloat (format flottant personnalisable)
  • Chaîne vers valeur numérique : StrToInt, StrToIntDef, StrToFloat

Exemple entièrement exécutable

{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}

uses SysUtils;

var
  MyInt: Integer;
  MyStr: string;
begin
  MyInt := 180;
  MyStr := 'My int number is ' + IntToStr(MyInt) + ', and the value of Pi is ' + FloatToStr(Pi);
  WriteLn(MyStr);
end.Langage du code : PHP (php)
Avantages
  1. Extrêmement flexible ; des fonctions spécifiques couvrent la plupart des types : entiers, flottants, dates, etc. ;
  2. Les fonctions de conversion inverse sont complètes et pratiques pour analyser les chaînes saisies par l’utilisateur.
Inconvénients

Lorsqu’il y a beaucoup de variables, les concaténations à l’aide de multiples opérateurs + produisent un code verbeux et difficile à lire.


Fonction Format

Format (similaire à sprintf du langage C)

Syntaxe de base

uses SysUtils;

var
  Res: string;
  MyInt: Integer;
  MyFloat: Double;
  MyString: string;
begin
  Res := Format('%d %.4f %s', [MyInt, MyFloat, MyString]);
end;Langage du code : JavaScript (javascript)
  • %d : marqueur de position pour entier ; %.4f : nombre flottant avec quatre décimales ; %s : marqueur de position pour chaîne
  • Le second paramètre est un tableau constant qui remplit successivement les marqueurs de position

Exemple complet

{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}

uses SysUtils;

var
  Res: string;
  MyInt: Integer;
  MyFloat: Double;
  MyString: string;
begin

  // set value
  MyInt := 169;
  MyFloat := 0.618;
  MyString := 'foxdevelop.com';

  Res := Format('%d %.4f %s', [MyInt, MyFloat, MyString]);
  WriteLn(Res);
end.Langage du code : PHP (php)

Avantages

  1. Le modèle de format est séparé des données pour une structure claire ; pour la traduction multilingue du logiciel, seul le modèle de chaîne doit être modifié sans toucher à la liste des variables ;
  2. Aucune logique cachée du compilateur. Déclarez une fonction personnalisée avec des paramètres variables array of const pour réutiliser cette logique de formatage et transmettre les paramètres à Format pour traitement natif.

Inconvénients

Le compilateur ne vérifie pas la correspondance entre les marqueurs de position et les types des variables à la compilation ; un type incompatible lève une exception de conversion EConvertError à l’exécution (aucun crash d’accès mémoire ne survient).


WriteStr

Stocker la sortie de Write dans une variable chaîne

Rôle : se comporte quasiment identiquement à Write/WriteLn, mais au lieu d’imprimer sur la console, il stocke le résultat dans la première variable chaîne cible :

var S: string;
begin
  WriteStr(S, 'Pi value: ', Pi:1:4);
end;Langage du code : JavaScript (javascript)

Exemple complet

{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}

uses SysUtils;

var S: string;
begin
  WriteStr(S, 'Pi value: ', Pi:1:4);
  WriteLn(S);
end.Langage du code : PHP (php)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *