Tank01
Messages postés106Date d'inscriptionlundi 4 août 2003StatutMembreDernière intervention10 novembre 2006
-
18 mai 2006 à 09:44
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 2014
-
18 mai 2006 à 22:17
Bonjour, je souhaitais savoir comment stocker une string dans un char
function stock_in_string(maString):string //Je passe ma string à stocker
var sequence_ESC:string; //string de sortie
var MonTableau: array [1..Length(maString)] of char;
begin
for i:=1 to Length(maString) do
begin
MonTableau[i]=i;
end;
result:=sequence_ESC;
end;
Je suis débutant en delphi et cherche une solution à un probleme assez compliqué, mon code vous parais -il bon ?
Tank01
Messages postés106Date d'inscriptionlundi 4 août 2003StatutMembreDernière intervention10 novembre 2006 18 mai 2006 à 10:07
D'accord ! lol, donc si je comprend bien, aucun intéret de stocker un string dans un char :d Merci beaucoup !
Mais alors, prenons en exemple;
je possède un string,
je souhaite trouver un caractère spécial,
je fais comme suis:
for i:=1 to Length(string_to_test) do
begin
if string_to_test[i]=char_to_search then Trouve:=True; //test si caractère recherché est trouvé
// ce code fonctionne ,je l'ai testé,
Est il possible dans cette meme boucle de réutiliser le I en cour afin de "continuer" une recherche dans la meme string ( je dis bien continuer, cet a dire partir du caractère trouvé)
style
for i (donc i en cour )to string_to_test[i]=char_to_search
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 18 mai 2006 à 10:21
pour chercher un caractère dans une chaine il existe 2 fonction POS et POSEX
pour Pos qui renvoie la première occurance
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.
et pour PosEx qui renvoie l'indice à partir d'une position donnée:
function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;
Description
PosEx renvoie l'indice de SubStr dans S, en commençant la recherche à
Offset. Si Offset a pour valeur 1 (par défaut), PosEx équivaut à Pos.
PosEx renvoie 0 si SubStr n'est pas trouvée, si la valeur d'Offset est
supérieure à la longueur de S, ou si la valeur d'Offset est inférieure
à 1.
tu peux ainsi réutiliser l'indice comme offset pour la recherche suivante
@+
jlen
Vous n’avez pas trouvé la réponse que vous recherchez ?
Tank01
Messages postés106Date d'inscriptionlundi 4 août 2003StatutMembreDernière intervention10 novembre 2006 18 mai 2006 à 10:58
Encore une petite questions (toujours simple !! lol)
i=Pos(#27: string; string_to_test: string);//Cherche un ESC
j=PosEx(const #27, string_to_test: string; Offset: Cardinal = i);//cherche un deuxième ESC
Delphi accepterais t-il de construire une string a l'aide des contenus de mes indices récupérés dans Pos et PosEx ?
var NewString; //ma string a construire
i étant un numéro d'index m'ayant trouvé mon caractère(avec POS)
j étant un numéro d'index m'ayant trouvé mon secon caractère. (avec poSEX)
je souhaiterais stocker dans "NewString" ce qu'il y a entre i et J
Prenom l'exemple ou i est à 5 et J à 14, je voudrais stocker dans ma string, les caractères allant de i à j ( soit des indices 5 à 14) !
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 18 mai 2006 à 11:05
utilise un copy:
function Copy(S; Index, Count: Integer): string;
Description
S est une expression de type chaîne ou tableau dynamique. Index et
Count sont des expressions de type entier. Copy renvoie une sous-chaîne
ou un sous-tableau contenant Count caractères ou éléments en partant de
S[Index]. La sous-chaîne ou le sous-tableau est une copie unique
(c'est-à-dire qu'il/elle ne partage pas de mémoire avec S ; même
si les éléments du tableau sont des pointeurs ou des objets, ils ne
sont pas copiés non plus).
Si Index est plus grand que la taille de S, Copy renvoie une chaîne ou un tableau vide.
Si Count indique plus de caractères ou d'éléments de tableau que le
nombre disponible, seuls les caractères ou les éléments compris entre
S[Index] et la fin de S sont renvoyés.
il te suffit de calculer count entre tes 2 indices
Tank01
Messages postés106Date d'inscriptionlundi 4 août 2003StatutMembreDernière intervention10 novembre 2006 18 mai 2006 à 11:21
aaaa d'accord, cette fonction est beaucoup plus simple que l'usine à gaz que j'éssayais de coder ( en passant avec des for imbriqués.....). Cependant j'ai du mal a comprendre l'aide de delphi, pour utiliser la fonction COPY, si j'ai bien compris, elle permet de "Renvoyer une sous-chaîne d'une chaîne ou un segment de tableau dynamique". donc dans mon cas, je possède ma chaine (string_to_test) également i (contenant l'indice de la position de mon caractère recherché ) puis j (contenant l'indice de la positions de mon second caractère recherche) si je souhaite en extraire la chaine entre ses deux indices