Et où est-elle remplie ?
Dans le constructeur, car il ressemble à ça :
et le type TTableau est déclaré dans une autre Unité.
Code : Sélectionner tout - Visualiser dans une fenêtre à part constructor Create(uneListe:ttableau);
Tu ne reseterais pas ton tableau directement après ThreadFlux.Create() par hasard ?
Voilà précisemment ce que je fait
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 constructor tThreadflux.Create(uneListe: ttableau); var i:integer; begin inherited Create(false); setlength(lst.t,length(uneliste.t)); //initialisation des variables for i := 0 to length(uneliste.t) - 1 do begin Lst.t[i]:=uneListe.t[i]; end; Priority := tpNormal; end; procedure TThreadFlux.Execute; begin for i := 0 to length(Lst.t) - 1 do begin monurl:=Lst.t[i]; with TIdHTTP.Create(nil) do try monurl:=Lst.t[i]; source := Get(monurl); finally Free; end; TraitementFlux(source); end; end;![]()
Quel est l'intérêt d'utiliser un thread alors que tu vas traiter séquentiellement tes url ?
Autant le faire directement dans un code simple non ?
Modérateur Delphi
Le guide du bon forumeur :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
Parce qu'en fait je souhaite créé un service qui se lance tous les jours à une heure donnée (dans un fichier de config).
La question était sur: après l'instantiation du thread et non pas son constructeur.
Maintenant, essaye de remplacer cette ligne:
par:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Lst.t[i]:=uneListe.t[i];
SetString va effectivement copier la chaîne et non pas seulement son pointer
Code : Sélectionner tout - Visualiser dans une fenêtre à part SetString(Lst.t[i], PChar(uneListe.t[i]), Length(uneListe.t[i]));.
ps: Mais comme dit Rayek, le principe est peut-être discutable.
Partager