Problème de chaine en ADA - Ada - Programmation
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 ?
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....
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]
Marsh Posté le 14-05-2002 à 22:50:20
bon tant pis, merci
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....
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
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;
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.
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?
Marsh Posté le 12-06-2002 à 17:44:15
merde g encore oublié mon masque...
Marsh Posté le 12-06-2002 à 17:45:08
mais ditent donc, ca se fait pas de détérer les topics morts !
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
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!!!!!!!!
---------------
Ma passion : [:sunny delight]