salut,
veuillez me donner un coup de main:
je souhaiterais parcourir toutes les lignes d'un memo tout récuperant tout entier rencontré dans la chaine.
merci
salut,
veuillez me donner un coup de main:
je souhaiterais parcourir toutes les lignes d'un memo tout récuperant tout entier rencontré dans la chaine.
merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 VAR s:string; i:integer; n:string; begin s:=memo.text; n:=''; for i:=1 to length(s) do if s[i] in ['0'..'9'] then n:=n+s[i]; end;
Salut,
Je propose une version qui permet de rechercher plusieurs nombres dans une chaine de caractères. La méthode est peut être pas optimale mais néanmoins ça fonctionne. Voici le code :
J'espère que celà te conviendra
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 var Form1: TForm1; // Tableau dynamique d'entiers Tab : array of integer; implementation {$R *.dfm} procedure TForm1.TrouverNombreClick(Sender: TObject); var i,j:integer; Nbre:string; MonTexte:String; begin j:=0; SetLength(Tab,j); Nbre:=''; MonTexte:=Memo1.Text; for i:=1 to Length(MonTexte) do begin if MonTexte[i] in ['0'..'9'] then Nbre:=Nbre+MonTexte[i] else begin if Nbre<>'' then begin SetLength(Tab,j+1); Tab[j]:=StrToInt(Nbre); j:=j+1; Nbre:=''; end; end; end; end; procedure TForm1.AfficherNombreClick(Sender: TObject); var i:integer; begin for i:=Low(Tab) to High(Tab) do ShowMessage(IntToStr(Tab[i])); end; end.![]()
salut
merci vraiment car là j'ai avancé un tout petit peu.
en fait j'ai du texte dans un mémon et je souhaiterais récupérer dans chaque ligne chaque numérique qui sera écrit dans un fichier texte.Chaque numérique écrit dans le fichier sera séparé par un caractère spéciale(; ou #).
je veux donc faire cela en parcourant tout le mémo.
voila le code que j'ai écrit:
l'écriture ne donne pas le résultat voulu dans mon fichier texte:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 for k := 0 to memo1.lines.count do begin txt:=Memo1.lines[k]; j:=0; SetLength(Tab,j); Nbre:=''; for i:=1 to Length(txt) do begin if txt[i] in ['0'..'9'] then begin Nbre:=Nbre+txt[i]; write(F,trim(Nbre)+';'); end else begin if Nbre<>'' then begin SetLength(Tab,j+1); Tab[j]:=StrToInt(Nbre); j:=j+1; Nbre:=''; end; end; end;
1;1;12;4;45;454;7;74;9;
au lieu de 1;12;454;74;9;
merci de me donner un coup de main
normal;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 for i:=1 to Length(txt) do begin if txt[i] in ['0'..'9'] then begin Nbre:=Nbre+txt[i]; end else begin if Nbre<>'' then begin SetLength(Tab,j+1); Tab[j]:=StrToInt(Nbre); j:=j+1; write(F,trim(Nbre)+';'); Nbre:=''; end; end;
Bonjour,
J'apporte une petite modification de mon code. Le soucis est que si un nombre était trouvé en fin de chaine, on ne le prenait pas en compte.
Voici le code modifié :
Donne nous un exemple de contenu du Memo1 et ce que souhaites qu'il affiche. Comme ça de notre coté, on peut tester et coller plus à tes besoins
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 procedure TForm1.TrouverNombreClick(Sender: TObject); var i,j:integer; Nbre:string; MonTexte:String; begin j:=0; SetLength(Tab,j); Nbre:=''; MonTexte:=Memo1.Text; for i:=1 to Length(MonTexte) do begin if MonTexte[i] in ['0'..'9'] then Nbre:=Nbre+MonTexte[i] else begin if ((Nbre<>'') or ((i=length(MonTexte)) and (Nbre<>''))) then begin SetLength(Tab,j+1); Tab[j]:=StrToInt(Nbre); j:=j+1; Nbre:=''; end; end; end; end;
Voilà.
A+![]()
Partager