Caractères Jokers

cs_Koras Messages postés 3 Date d'inscription mercredi 13 août 2003 Statut Membre Dernière intervention 21 septembre 2005 - 19 sept. 2005 à 15:24
cs_Koras Messages postés 3 Date d'inscription mercredi 13 août 2003 Statut Membre Dernière intervention 21 septembre 2005 - 21 sept. 2005 à 15:02
Salut a toutes et a tous.



Voilà, je débute sous delphi, je suis en train d'essayer de programmer
un p'tit soft pour m'entrainer et j'ai besoin de me servir de
caractères jokers comme * et ? sous MS-DOS, seulement j'ai beau
chercher je ne trouve pas comment je peut utiliser ce genre de jokers
avec Delphi.

Voici un exemple de e que je voudrais faire :

if string ='http//*' then

begin

instruction1

insctruction2

end;



Donc "Si la valeur de string commence par http//"



Et c'est la que je ne vois aps comment utiliser le joker *, je ne sais
même pas si c'est ce caractère là qu'on utilise avec Delphi ?



Quelqu'un peut il m'aider SVP ?



Merci par avance de votre aide !



Cordialement.

KoraS

10 réponses

jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
19 sept. 2005 à 15:39
salut,

si tu veux savoir si ta chaine commence par http// il faut utiliser la
fonction pos qui renvoie la positon de la sous chaine dans la chaine.

if pos('http//',chaine)=1 then

begin

end;

bonne prog
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
19 sept. 2005 à 15:40
Dans le cas que tu décris tu ne peu pas (ou alors je ne sais pas comment faire).

Pour savoir si ta chaine contient "http://" tu dois utiliser la fonction pos.

exemple:

if pos('http//',string)>0 then

begin

instruction1

instruction2

end;



Si tu veux savoir si ta chaine commence par "http//" et bien tu lis les
6 premiers caracteres de la chaine et tu regarde s'ils correspondent (à
l'aide de la fonction copy)

exemple:

if copy(string,1,6)='http//' then


begin


instruction1


instruction2


end;
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
19 sept. 2005 à 15:47
-->CptPingu il est inutile de faire un copy puisque pos renvoi l'indice du premier caractere comme l'indique l'aide delphi
function Pos(Substr: string; S: string): Integer;


Description


Dans Delphi, la fonction Pos recherche une sous-chaîne, Substr, à l'intérieur d'une chaîne S. Substr et S sont des expressions de type chaîne.


Pos recherche Substr à l'intérieur de S et renvoie une valeur entière correspondant à l'indice du premier caractère de Substr à l'intérieur de S. Pos fait la distinction majuscules/minuscules. Si Substr est introuvable, Pos renvoie zéro.
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
19 sept. 2005 à 16:06
C'est exact, je n'avais pas fait attention a cela. Merci pour l'astuce.

Toutefois, il reste la question des jokers "?" à résoudre.

Par exemple tester ceci: a?bd'ef?, sachant qu'on ne sait pas ou se trouve les "?".



Je pense qu'une fonction qui gerait tout ceci serait pratique. (et pas
tres compliqué a faire, toujours a l'aide de la fonction pos), mais
j'avoue avoir une certaine flemme. Je laisse donc le soin à jlen de
créer une petite fonction. (si je vois que ca traine trop, ce qui
m'etonnerai, je m'en chargerai :p )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
19 sept. 2005 à 16:20
pour les jokers "?" je pense qu'il faut utiliser la fonction pos ou posex pour extraire les sous chaines de recherche par copy et vérifier si ces sous chaines sont à la position dans la chaine initiale. Facile à dire pas très compliqué à faire mais cet après-midi je n'ai pas trop le temps.
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
19 sept. 2005 à 16:26
Aucun probleme, je m'en chargerais en fin d'apres midi.
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
19 sept. 2005 à 16:48
il y a une façon plus simple de faire

var:

chaine1:string;

chaine2:string;

i:integer;

begin

chaine1:= 'abcdefghijklmn';

chaine2:='abcd?fgh?jklmn';

while pos('?',chaine1)<>0 do

begin

i:=pos('?',chaine1);

delete(chaine1,i,1);delete(chaine2,i,1); //on supprime les caractres à la position des jokers dans les deux chaines

end;

if chaine1 =chaine2 then

begin

end;

end;

je ne l'ai pas testé mais cela doit marcher;
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
19 sept. 2005 à 16:51
petite erreur il faut inverser chaine1 et chaine2

chaine1:='abcd?fgh?jklmn';

chaine2:='abcdefghijklmn';

mille excuses!!!
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
19 sept. 2005 à 23:05
La fonction :
function MatchesMask(constFilename,Mask:string):Boolean;
contenue dans l'unité masks effectue ce travail.

Remarque : au lieu de http//, ne serait-ce pas plutôt http:// qu'il faut rechercher ?


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
cs_Koras Messages postés 3 Date d'inscription mercredi 13 août 2003 Statut Membre Dernière intervention 21 septembre 2005
21 sept. 2005 à 15:02
Merci beaucoup de votre aide, je devrais m'en sortir de cette façon, je vous tiens au courant.



Merci encore !

Koras
0
Rejoignez-nous