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
La patience est un Chemin d'or
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;
PAS DE DESTIN, C'EST CE QUE NOUS FAISONS
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
La patience est un Chemin d'or
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;
PAS DE DESTIN, C'EST CE QUE NOUS FAISONS
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+
merci pour ton coup de main.il faut que je t'explique tout le problème.
voila tout le code que j'ai écrit:
----------------------------
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
46
47
48
49 procedure TForm1.Button2Click(Sender: TObject); var lig,Nbre:string; i,j,cpt,k:integer; Txt:string; Tab : array of integer; begin assignfile(F,c:\test.txt); rewrite(F); cpt:=1; 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]; cpt:=cpt+1; if cpt<5 then //pour écrire 4 nombres sur une ligne write(F,trim(Nbre)+';') else if cpt=5 then begin write(F,trim(Nbre)); writeln(F); cpt:=1; end else write(F,trim(Nbre)+';'); end end; end; begin writeln(F);write(F,trim(Nbre)+';'); cpt:=0; end; closefile(F); end;
ce code me donne comme résultat:
-------------------------
le mémo contient ceci
Service Class 1
Installed = 12
Active = 454
Deactive = 74
Expired = 9
Service Class 2
Installed = 12
Active = 15
Deactive = 2
Expired = 0
l'écriture dans mon fichier doit etre:
1;12;454;74;9
2;12;15;2;0
car meme les nombres doivent etre écrit
--------------
ce code me donne comme résultat:
1;1;12;4
45;454;7;74
9;2;1;12
1;15;2;0
en fait les nombres de 2 chiffres et plus sont découpés.
merci les gars
La patience est un Chemin d'or
mieux utlisé les fichier INI
n'oublie pas d'ulisé les balise codeTIniFile stocke et lit des informations et des paramètres propres à une application à partir de fichiers INI.
Unité
IniFiles
Description
TIniFile permet de gérer le stockage et la lecture d'informations et de paramètres propres à une application dans un fichier INI standard. Un fichier INI stocke des informations par groupes logiques appelés "sections". Dans chaque section, les valeurs de données réelles sont stockées dans des clés nommées. Ces clés sont de la forme*:
<nomclé>=<valeur>
FileName est transmis au constructeur TIniFile et identifie le fichier INI auquel accède l'objet.
Remarque*: Sous Linux, TIniFile est identique à TMemIniFile. Par contre, dans la version Windows, TIniFile écrit en mémoire tampon différemment de TMemIniFile.
PAS DE DESTIN, C'EST CE QUE NOUS FAISONS
Salut,
Je te propose un truc de ce genre :
A toi de voir si ca te convient.
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
46
47
48 procedure TForm1.Button1Click(Sender: TObject); var lig,Nbre:string; i,j,cpt:integer; MonTexte:String; Tab:array of string; F:TextFile; begin AssignFile(F,'C:\Test.txt'); Rewrite(F); j:=0; cpt:=0; SetLength(Tab,j); Nbre:=''; lig:=''; 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]:=Nbre; j:=j+1; cpt:=cpt+1; lig:=lig+Nbre; if ((cpt<5) and (Nbre<>'')) then begin lig:=lig+';'; end; if cpt=5 then begin ShowMessage(lig); cpt:=0; Writeln(F,lig); lig:=''; end; Nbre:=''; end; end; end; CloseFile(F); end;
A+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager