Problème de chaine en ADA

Problème de chaine en ADA - Ada - Programmation

Marsh Posté le 14-05-2002 à 22:33:39    

je veux une chaine de 255 de long, jusque la pas de probleme :
 
nom1       : string(1..lg_nom); (lg_nom est une variable initialisee a 255)
 
mais le truc c'est que ensuite je veux ecrire un truc dans cette chaine, pas avec un get (scanf en C) mais directement dans mon prog et remplir le reste de la chaine avec des blanc
 
sachant que l'on peut initialiser une chaine de blanc comme ca :
 
nom1       : string(1..lg_nom) := (others => ' ';);  
 
 
 
j'ai essayé de faire ca :
 
nom2       : string(1..lg_nom) := "mon texte" & (others => ' ';);  
 
....mais ca marche pas!!!!!
ca fait 1/2h que je suis dessus, je comprends pas.....AIDEZ-MOI!!!!!!!! :hello:


---------------
Ma passion : [:sunny delight]
Reply

Marsh Posté le 14-05-2002 à 22:33:39   

Reply

Marsh Posté le 14-05-2002 à 22:38:41    

pourquoi tu le fait pas à la main, avec une boucle for pour remplir le reste d'espace ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 14-05-2002 à 22:41:29    

le truc c que si je fait
 
machaine := "montexte";
for.....
.....
end loop;
 
le compilo gueule (warning) des le machaine:="montexte";  
parce que ADA veut pas que je mette une chaine de 8 caracteres (montexte) dans une string prevue pour 255....


---------------
Ma passion : [:sunny delight]
Reply

Marsh Posté le 14-05-2002 à 22:46:33    

1) tu dois tout remplir dans une chaine
2) l'opérateur & ne marche que pour des concatenation de string
Donc tu peux faire
 
Nom1 : string (1..x) := "             ";  -- ou x = le nombre de char
Nom2 : string (1..lg_nom) := "mon texte" & Nom1;
 
ou
Nom1 : string (1..lg_nom) := "mon texte" & "        "; -- avec le nombre d'espace qu'il faut

 

[jfdsdjhfuetppo]--Message édité par Willyzekid le 14-05-2002 à 22:47:22--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 14-05-2002 à 22:50:20    

bon tant pis, merci :hello:


---------------
Ma passion : [:sunny delight]
Reply

Marsh Posté le 14-05-2002 à 22:51:44    

heu et pourquoi ca marche pas ca?

Reply

Marsh Posté le 14-05-2002 à 22:57:01    

sisi ca marche
mais le probleme c'est que je vais devoir mettre 255-(nbre ce char de mon txt) blancs ds ma string nom1
 
le truc c que j'aimerai utiliser le others, comme ca, pas besoin de faire les 255 blancs....


---------------
Ma passion : [:sunny delight]
Reply

Marsh Posté le 14-05-2002 à 23:09:04    

Effectivement...je vois pas trop comment faire!
Si t'as beaucoup de chaine de charactère à faire comme ca, tu peux faire une fonction qui remplit le reste avec des " ".  
 
Au pire:
nom1 : string(1..lg_nom) := (others=>' ';);
nom2 : string(1..lg_nom) := "mon texte" & nom1(1..x); -- x = longeur de "mon texte"
 
Mais bon c'est la même chose et c'est pas très sexy :)

Reply

Marsh Posté le 15-05-2002 à 09:55:51    

tilateur a écrit a écrit :

le truc c que si je fait
 
machaine := "montexte";
for.....
.....
end loop;
 
le compilo gueule (warning) des le machaine:="montexte";  
parce que ADA veut pas que je mette une chaine de 8 caracteres (montexte) dans une string prevue pour 255....  




 
il faut que tu fasses ca : (ou un truc du genre : je me souviens plus de la syntaxe)
 
machaine(1.."montexte".length) := "montexte";
for.....
.....
end loop;


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 12-06-2002 à 17:37:08    

Salut,  
Avec le get_line t pas obligé de déclarer ta chaine avec une longueur. Tu vides ton buffer avec skip_line pis après tu fais un get_line de ta saisie clavier et il remplit le reste de blanc normalement.
Enfin g un peu lâché l'ada depuis un moment mais renseigne toi sur la fontion get_lien, elle marche et c plus zoli qu'avec une boucle de blancs.

Reply

Marsh Posté le 12-06-2002 à 17:37:08   

Reply

Marsh Posté le 12-06-2002 à 17:43:53    

nom1       : string(1..lg_nom) := (others => ' ' );  
 
nom1       : string(1..lg_nom) := "mon texte";  
 
ca marche pas ca?


---------------
Narf... [:dlr_ninja]  
Reply

Marsh Posté le 12-06-2002 à 17:44:15    

merde g encore oublié mon masque...


---------------
Narf... It is broken...
Reply

Marsh Posté le 12-06-2002 à 17:45:08    

mais ditent donc, ca se fait pas de détérer les topics morts !


Message édité par benou le 06-12-2002 à 17:45:17
Reply

Marsh Posté le 12-06-2002 à 18:01:12    

Si ça intéresse tjs qqun les chaines en Ada, mon prof m'avait conseillé d'utiliser ça :
http://perso.wanadoo.fr/adalog/com [...] ble_String

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed