Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
7595 connectés 

  FORUM HardWare.fr
  Programmation
  Ada

  [Ada] Est-ce possible ; Comment ? (D'une chaîne, retourner un nombre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Ada] Est-ce possible ; Comment ? (D'une chaîne, retourner un nombre

n°2543913
lady ada
Posté le 11-10-2026 à 14:11:55  profilanswer
 

Bonjour,
 
Je voudrais passer une chaîne et retourner un nombre.
 
Je vous présente la procédure Make produisant un Attribut_Record ; Un article composé d'une chaîne de caractère en guise d'image, la valeur Value dont le type dépend de la chaîne, et le type Enum alias le type de donnée.

Code :
  1. function Make (Names : in String; Value : in String) return Attribut_Record is
  2.      Att : Attribut_Record;
  3.   begin
  4.      Att.Name := new String ' (Names);
  5.      begin
  6.      Att.boo := Boolean'Value(Value);
  7.      Att.Enum := Boo;
  8.      Att.Value := new String ' (Boolean'Image(Att.Boo));
  9.      exception
  10.      when Constraint_Error =>
  11.         begin
  12.            Att.Int := Integer'Value(Value);
  13.            Att.Enum := Int;
  14.            Att.Value := new String ' (Integer'Image(Att.Int));
  15.         exception
  16.            when Constraint_Error =>
  17.           begin
  18.              Att.Flt := float'Value(Value);
  19.              Att.Enum := Flt;
  20.              Att.Value := new String ' (Float'Image(Att.Flt));
  21.           exception
  22.              when Constraint_Error =>
  23.             begin
  24.                Att.date := Formatting.Value(Value);
  25.                Att.Enum := Date;
  26.                Att.Value := new String ' (Formatting.Image(Att.Date));
  27.             exception
  28.                when Constraint_Error =>
  29.                   begin
  30.                  Att.str := new String ' (Value);
  31.                  Att.Enum := Str;
  32.                  Att.Value := new String ' (Att.Str.all);
  33.                   end;
  34.             end;
  35.           end;
  36.         end;
  37.      end;
  38.      return Att;
  39.   end Make;


Je suis sur un os. J'entre "8.0 * 7.0" et je voudrais 56.0.
 
S'il vous plait, merci.


Message édité par lady ada le 11-10-2026 à 14:19:25

---------------
main is business suite for Ada projects. Web site : inconito.net
mood
Publicité
Posté le 11-10-2026 à 14:11:55  profilanswer
 

n°2543918
mechkurt
Posté le 11-10-2026 à 19:48:08  profilanswer
 

`Float'Value` ne sait convertir qu'une chaîne représentant un nombre, pas évaluer une expression mathématique. `"8.0 * 7.0"` n'est donc pas une valeur Float valide.
 
Pour obtenir `56.0`, il faut écrire un évaluateur d'expressions qui analyse la chaîne, reconnaît les nombres et les opérateurs, puis effectue le calcul.
 
Si tu veux simplement gérer les quatre opérations de base, un petit parseur suffit. Si tu veux aussi gérer les parenthèses et les priorités opératoires, il faudra aller un peu plus loin.


---------------
D3
n°2543959
lady ada
Posté le 12-10-2026 à 07:20:36  profilanswer
 

Merci John !


---------------
main is business suite for Ada projects. Web site : inconito.net

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ada

  [Ada] Est-ce possible ; Comment ? (D'une chaîne, retourner un nombre

 

Sujets relatifs
[Ada] Ada.Finalization[Ada] Taches et entrées de tache (traitement du clavier)
[Ada][Linux][import de system] Optimisation de l'appel[Ada] Coloriser les liens symbolique sur GNU/Linux
[Ada] Passage du paramètre "../*" et Opération_Iteration[Ada][Gnat] Ada.Directories.Extension(Name : String) return String
[Ada] with Gnat.Directory_Operations.Iteration; Wilcard_Iteration[Ada] Locate_Exec_On_Path et Spawn
[Swi-Prolog] Retourner un numero d'erreur si le résultat est false[Divers] Importer cellules Excel vers Word/PP ou PDF, possible ?
Plus de sujets relatifs à : [Ada] Est-ce possible ; Comment ? (D'une chaîne, retourner un nombre


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)