découpage d'une chaine et stockage dans une listbox

découpage d'une chaine et stockage dans une listbox - Delphi/Pascal - Programmation

Marsh Posté le 18-02-2008 à 21:58:12    

Bonjour j'essaie de faire un programme qui supprime les espaces en trop dans une chaine de caractère j'ai donc fait l'algo suivant :
 

Code :
  1. pour i<-1 à longueur(chaine) faire
  2.      si (chaine[i]=' ') et (chaine[i+1]=' ') alors
  3.        chaine[i]<-chaine[i+1]
  4.      fin si
  5.    fin pour


 
a partir de cela j'ai fait le programme en pascal pour delphi :
 

Code :
  1. for i:=1 to length(chaine) do
  2.    begin
  3.    if ((chaine[i]=' ') and (chaine[i+1])) then
  4.        begin
  5.            chaine[i]:= chaine[i+1];
  6.        end;
  7.    end;


mais mon probleme est que ce code ne fonctionne pas et je ne sais pas pourquoi est ce que vous pourriez m'expliquer quelle erreur j'ai fait.


Message édité par amteurasm le 19-02-2008 à 19:15:34
Reply

Marsh Posté le 18-02-2008 à 21:58:12   

Reply

Marsh Posté le 19-02-2008 à 20:54:46    

Salut
 
quand tu sera arrivé à la fin de ta boucle, chaine[i+1] va te donner de la choucroutte car ça correspond au caractère dans (length[chaine]+1)  [:barthaliastoxik]  
 
après je sais pas trop si on peut décaler comme ça dans une chaine enfin si c'est prudent de le faire :??:  
 
à ta place, j'utiliserais une autre variable pour n'y stocker que les caractères de la chaine qui ne sont pas un espace:
 


chaine2:='';
       
for i:=1 to length(chaine) do
 if chaine[i]<>' ' then chaine2:=chaine2+chaine[1];
 
//pis à la limite:
chaine:=chaine2;


 
c'est plus propre comme ça :)

Reply

Sujets relatifs:

Leave a Replay

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