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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ada Discussion :

Concaténation des string/unbounded_String


Sujet :

Ada

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 90
    Points
    90
    Par défaut Concaténation des string/unbounded_String
    Bonjour chers internautes,

    Depuis deux jours je cherche a concatener les strings.

    J'ai une boucle qui parcoure une liste de nom et ces noms je veux les concatener :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Variants_List : String := " ";
    Variants_List := Variants_List & String_Node_Name & ",";
    Ceci me renvoie une erreur "contraints error"
    Quand je prends Unbounded_String
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Variants_List : Unbounded_String;
    Variants_List := Variants_List & +String_Node_Name & +",";
    (+ transforme String en Unbounded_String)
    Ici j'ai l'erreur Missing Operand.
    Ce que je veux c'est juste avoir une chaine "Nom1, Nom2, Nom3 ..."

    Quelqu'un saurait m'aider peut etre.
    Merci mille fois.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 141
    Points : 184
    Points
    184
    Par défaut
    Bonjour,

    dans le 1° cas, tu as défini Variants_List comme étant égal à " ", et donc Ada considère que Variants_List est une chaîne de 1 caractère. Toute tentative ultérieure de faire rentrer une chaîne plus longue va avoir le même résultat que celui que tu as constaté.

    Dans le 2° cas, je ne vois que le fait que tu tentes d'initialiser Variants_List sans l'avoir initialisé.

    Ceci marchera peut-être mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Variants_List : Unbounded_String := +" ";
    Bon courage.

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 119
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par mourbare Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Variants_List : Unbounded_String;
    Variants_List := Variants_List & +String_Node_Name & +",";
    (+ transforme String en Unbounded_String)
    Je ne sais pas d'où sort l'opérateur "+" que tu utilises, mais ici, il ne sert à rien.
    Le package Ada.Strings.Unbounded définit les opérateurs de concaténation entre Unbounded_String et String.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function "&" (Left : in Unbounded_String; Right : in String)
          return Unbounded_String;
    function "&" (Left : in String; Right : in Unbounded_String)
          return Unbounded_String;

  4. #4
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par jc-miranda Voir le message
    Je ne sais pas d'où sort l'opérateur "+" que tu utilises, mais ici, il ne sert à rien.
    Le package Ada.Strings.Unbounded définit les opérateurs de concaténation entre Unbounded_String et String.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function "&" (Left : in Unbounded_String; Right : in String)
          return Unbounded_String;
    function "&" (Left : in String; Right : in Unbounded_String)
          return Unbounded_String;
    salut,

    "+" est juste une fonction qui me transforme string en unbounded_string. Car le nom du noeud est en String.

    merci

  5. #5
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 119
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par mourbare Voir le message
    "+" est juste une fonction qui me transforme string en unbounded_string. Car le nom du noeud est en String.
    Hum, ça j'ai bien compris, mais au risque de me répéter, cet appel de "+" ne sert absolument à rien dans ton exemple plus haut et est très probablement la cause de ton problème....

    Ada gère déjà la concaténation Unbounded_String/String.
    Tu n'as qu'à compiler cet exemple pour t'en convaincre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
    with Ada.Text_Io;
     
    procedure Toto is
       Node : constant String := "Cool";
       Str  : Ada.Strings.Unbounded.Unbounded_String;
    begin
       Str := Str & Node;
       Ada.Text_Io.Put_Line (To_String (Str));
    end Toto;
    A+

  6. #6
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par jc-miranda Voir le message
    Hum, ça j'ai bien compris, mais au risque de me répéter, cet appel de "+" ne sert absolument à rien dans ton exemple plus haut et est très probablement la cause de ton problème....

    Ada gère déjà la concaténation Unbounded_String/String.
    Tu n'as qu'à compiler cet exemple pour t'en convaincre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
    with Ada.Text_Io;
     
    procedure Toto is
       Node : constant String := "Cool";
       Str  : Ada.Strings.Unbounded.Unbounded_String;
    begin
       Str := Str & Node;
       Ada.Text_Io.Put_Line (To_String (Str));
    end Toto;
    A+
    Merci pour les conseils et l'aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Concaténer des cellules de strings avec une matrice de valeurs
    Par procrastination dans le forum MATLAB
    Réponses: 3
    Dernier message: 16/10/2014, 13h25
  2. [Objective-C] Concaténation des strings
    Par tlili_info dans le forum Objective-C
    Réponses: 1
    Dernier message: 11/05/2013, 14h46
  3. Concaténations des String
    Par franco9 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 19/04/2013, 13h39
  4. concaténer une variable et des string
    Par une_tite_question dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/08/2010, 12h33
  5. concaténation des string
    Par yayasam dans le forum C#
    Réponses: 3
    Dernier message: 26/07/2010, 14h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo