bonjour, je bloque sur un message du compilateur. J'ai beau chercher je ne comprend pas pour l'instant
ce qui correspond à cette ligne:[DCC Erreur] Updator.pas(397): E2066 Opérateur ou point-virgule manquant
j'ai un composant qui crée un thread avec en paramètre un record que je stock dans le thread avec un pointer,
Code : Sélectionner tout - Visualiser dans une fenêtre à part ConfUpdator := PConfUpdator(Message.WParam)^;
le thread fait son travail puis envoie un message au composant avec l'adresse du pointer
pour mettre à jour le record du composant avant de libéré le pointer et sortir du thread
si il y a mieux je prend tout les conseils!
je fait comme sa car pendant que le thread travaille des données du record peuvent changer.
le code raccourci:
merci.
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101 Unit Updator; Interface Uses Classes, {$IFDEF MSWINDOWS} Windows, {$ENDIF} SysUtils, Dialogs, Messages, Forms; Const WM_INFOSUPDATE = WM_USER + 1; Type TConfUpdator = Record NewVersion: String; End; TThreadUpdater = Class(TThread) Private MainHandle: HWND; PConfUpdator: ^TConfUpdator; DownUpdate: Boolean; Protected Procedure Execute; Override; Public Constructor Create(AMainHandle: HWND; AConfUpdator: TConfUpdator); Destructor Destroy; Override; End; TUpdator = Class(TComponent) Private Handle: HWND; ConfUpdator: TConfUpdator; ThreadUpdater: TThreadUpdater; Protected Procedure WMInfosUpdate(Var Message: TMessage); Message WM_INFOSUPDATE; Public Procedure CheckUpdate; Constructor Create(AOwner: TComponent); Override; Destructor Destroy; Override; Published Property NewVersion: String Read ConfUpdator.NewVersion; End; Implementation { TThreadUpdater } Constructor TThreadUpdater.Create(AMainHandle: HWND; AConfUpdator: TConfUpdator); Begin Inherited Create(False); new(PConfUpdator); FreeOnTerminate := True; MainHandle := AMainHandle; PConfUpdator^ := AConfUpdator; End; Destructor TThreadUpdater.Destroy; Begin dispose(PConfUpdator); End; Procedure TThreadUpdater.Execute; Begin //on met à jour les propriétés du composants avec les infos récupéré SendMessage(MainHandle, WM_INFOSUPDATE, Integer(@PConfUpdator), 0); End; { TUpdator } Constructor TUpdator.Create(AOwner: TComponent); Begin Inherited Create(AOwner); Handle := AllocateHWnd(AllMsg); With ConfUpdator Do Begin NewVersion := ''; End; End; Destructor TUpdator.Destroy; Begin Inherited; DeallocateHWnd(Handle); End; Procedure TUpdator.WMInfosUpdate(Var Message: TMessage); Var PConfUpdator: ^TConfUpdator; Begin ConfUpdator := PConfUpdator(Message.WParam)^; End; Procedure TUpdator.CheckUpdate; Begin ThreadUpdater := TThreadUpdater.Create(Self.Handle, ConfUpdator); End; End.
Partager