Decouper une chaine String

Decouper une chaine String - Delphi/Pascal - Programmation

Marsh Posté le 19-12-2005 à 14:36:39    

Salut a tous  :hello:  
 
J' ai un piti pb:
 
L' utilistateur de mon logiciel entre une url: http://serveur1.domaine.com/dossier1/fichier1.exe
 
J' aimerait obtenir:
 
Protocol = http://
 
Serveur = serveur1.domaine.com
 
Dossier = dossier1
 
Fichier = Fichier1.exe
 
Comment m' y prendre?  :??:  
 
Meci beaucoup   ;)


Message édité par jol30 le 19-12-2005 à 17:27:53
Reply

Marsh Posté le 19-12-2005 à 14:36:39   

Reply

Marsh Posté le 19-12-2005 à 20:49:23    

salut,
 
il faut utiliser les fonctions POS (pour rechercher les positions des '/' dans la chaine) et COPY (pour extraire les différentes parties).
 
a+

Reply

Marsh Posté le 19-12-2005 à 22:34:29    

reg exp c bien aussi :o

Reply

Marsh Posté le 19-12-2005 à 22:38:23    

red faction a écrit :

reg exp c bien aussi :o


 
On peut avec Delphi?

Reply

Marsh Posté le 19-12-2005 à 23:22:07    

bha avec les bon packages, oui


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 21-12-2005 à 22:01:14    

Sinon on peut utiliser les StringList :
 
var
  SL: TStringList;
...
SL := TStringList.Create;
SL.Text := StringReplace('http://serveur1.domaine.com/dossier1/fichier1.exe', '/', #13#10, [rfReplaceAll]);
Ensuite :
SL[0] : Contient 'http'
SL[1] : Contient ''
SL[2] : Contient 'serveur1.domaine.com'
SL[3] : Contient 'dossier1'
SL[4] : Contient 'Fichier1.exe'
 
...
  SL.Free;


Message édité par copper_fr le 21-12-2005 à 22:02:31
Reply

Marsh Posté le 17-10-2007 à 22:02:45    

Merci, copper_fr, le truc va bien me servir !
En creusant un peu, on peut faire encore plus simple avec la propriété DelimitedText (Delphi 2006, je ne sais pas si elle existe sur les versions + anciennes) :
 
var  
  SL: TStringList;  
...  
SL := TStringList.Create;  
SL.Delimiter := '/';
SL.DelimitedText := 'http://serveur1.domaine.com/dossier1/fichier1.exe';  
 
-> Même résultat
 
Avec ce truc, on peut splitter n'importe quoi selon n'importe quel délimiteur.
Si la chaîne à splitter contient des CrLf, on peut les conserver en insérant cette ligne :
SL.StrictDelimiter := True;
 

Reply

Marsh Posté le 27-01-2008 à 12:29:47    

program ouniss;
uses wincrt;
var
ch,h:string;
pos,l:integer;
procedure saisir(var pos :integer; var l:integer;var ch:string);
begin
writeln('donner la chaine CH =');
read(ch);
writeln('donner le position de coupure POS =');
read(pos);
writeln('donner le nombre de caractere on doit coupe L =');
read(l);
end;
procedure coupe ( var ch :string; pos,l:integer);
begin
 delete(ch,pos,l);
end;
procedure affiche (var ch:string );
begin
writeln('la chaine devient comme ca =',ch);
end;
BEGIN
saisir(pos,l,ch);
coupe(ch,pos,l);
affiche(ch);
END.

Reply

Marsh Posté le 29-01-2008 à 10:39:44    

ouniss a écrit :

program ouniss;
uses wincrt;
var
ch,h:string;
pos,l:integer;
procedure saisir(var pos :integer; var l:integer;var ch:string);
begin
writeln('donner la chaine CH =');
read(ch);
writeln('donner le position de coupure POS =');
read(pos);
writeln('donner le nombre de caractere on doit coupe L =');
read(l);
end;
procedure coupe ( var ch :string; pos,l:integer);
begin
 delete(ch,pos,l);
end;
procedure affiche (var ch:string );
begin
writeln('la chaine devient comme ca =',ch);
end;
BEGIN
saisir(pos,l,ch);
coupe(ch,pos,l);
affiche(ch);
END.


 
Faudrait lire le sujet, c'est pas vraiment ça qui est recherché !
 
Par contre, juste une petite remarque, ça fait plusieurs fois que je te vois poster tes codes sur le forum et je dois te dire qu'ils sont particulierement illisibles !
Un code n'est pas seulement fait pour fonctionner, il doit etre également comprehensible par un autre programmeur et donc tu ferais bien de faire quelques efforts d'indentation et de présentation. Surout quand c'est des codes d'aide sur des forums et que les gens vont surement devoir le modifier pour que ça colle a leurs besoins.  
(Moi je dis ça pour toi, hein !)
 
 

Reply

Sujets relatifs:

Leave a Replay

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