Couper un string avec des délimiteurs

Couper un string avec des délimiteurs - Delphi/Pascal - Programmation

Marsh Posté le 25-03-2003 à 18:45:29    

J'aimerais savoir comment couper un string en delphi avec des délimiteurs pour les mettre dans un tableau.
 
Exemple j'ai une phrase et je met chaque môt dans un tableau.

Reply

Marsh Posté le 25-03-2003 à 18:45:29   

Reply

Marsh Posté le 25-03-2003 à 19:06:43    

salut,
 
ben avec quelque chose comme cela;
 
Procedure extraire_mot(s:string);
var i,l,j: integer;
    temp:string;
begin
 l:=length(s);
 i:=1;
 j:=1;
 repeat
   temp:='';  
    repeat
     temp:=temp+s[i];
     i:=i+1;
    until i=' ';
  t[j]:=temp;
  j:=j+1;
  i:=i+1;
 until i=l;
end;
 
où test un array[1..motmax] of string;


---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
Reply

Marsh Posté le 25-03-2003 à 20:19:03    

davidmarli a écrit :

salut,
 
ben avec quelque chose comme cela;
 
Procedure extraire_mot(s:string);
var i,l,j: integer;
    temp:string;
begin
 l:=length(s);
 i:=1;
 j:=1;
 repeat
   temp:='';  
    repeat
     temp:=temp+s[i];
     i:=i+1;
    until i=' ';
  t[j]:=temp;
  j:=j+1;
  i:=i+1;
 until i=l;
end;
 
où test un array[1..motmax] of string;
 


 
Toi t'aimes pas les repeat until [:meganne]


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 25-03-2003 à 20:21:14    

y'a pas un équivalent du "split" du VB ?
 
c'est quand même plus simple...
 
en VB par exemple, c'est :
 
myTab = split(myString, delimiter)

Reply

Marsh Posté le 25-03-2003 à 21:39:42    

Très étrangement, non, y a pas.
Enfin, y a mais il coupe aussi sur les espaces donc c'est pourri.
Mais bon, il suffit de l'écrire une fois et le mettre dans une unit "mesfonctions" qu'on utilise où on veut hein :o
À la longue on se fait comme ça plein de petites fonctions utiles.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 25-03-2003 à 23:40:07    

Sinon je repense à un truc : y a une solution un peu bidouille :
 

Code :
  1. var
  2.   original: string;
  3.   liste: TStringList;
  4. begin
  5.   liste := TStringList.Create;
  6.   liste.Text := StringReplace(original, delimiteur, #13#10, [rfReplaceAll]);
  7.   // ici liste contient la liste des chaînes que tu peux parcourir tranquillement
  8.   // et éventuellement aller copier dans un tableau
  9.   liste.Free
  10. end;


Message édité par antp le 25-03-2003 à 23:40:30

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 26-03-2003 à 13:43:11    

Ah ouais en effet, c'est pas bête comme système :jap:

Reply

Marsh Posté le 26-03-2003 à 22:28:39    

Carrement pas bourrin non plus... sacre ANTP  :D


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 26-03-2003 à 22:35:25    

ça a l'avantage de marcher sans bugs et de ne pas devoir connaître à l'avance le nombre de mots :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 26-03-2003 à 22:45:00    

antp a écrit :

ça a l'avantage de marcher sans bugs et de ne pas devoir connaître à l'avance le nombre de mots :D


 
c ce que je disais... efficace et pas bourrin  :jap:


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 26-03-2003 à 22:45:00   

Reply

Marsh Posté le 19-03-2008 à 13:14:02    

Bonjour,  
 
Dans le meme genre, je cherche a splitter un sting en fonction de sa longeure par rapport aux champos destinataire. En gros, il s'agit d'un montant en lettre du genre  
"Dix mille six cent vingt euros et trente centimes" que j'aimerai , en fonction de la longeur pouvoir repartir sans couper les mots sur un ou deux champ .  
Si mon champ 1 fait 29car, cele amen par ex a couper euro (en perdant le "s". . Dance ce cas, ce mot doit donc aller dans le champ 2 avec la suite.
 
Et la, je bloque !! Mon expezroience est quand meme limitée !!  
J'utilise Delphi6 Pro, etr merci dr'avance a ceux qui pourrait me donner un debut de piste, sans passer par un tableau ou il faudrait ensuite reparcourir ce tableau, lister la log des mots;...etc

Reply

Sujets relatifs:

Leave a Replay

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