Autor Beitrag
gih9
Hält's aus hier
Beiträge: 14

Win2000
D5 Prof.
BeitragVerfasst: Mo 19.04.04 15:53 
Hallo alle,
kann mir mal einer sagen wie ich bei TEvent.Create(...) die Parameter setzen muss damit es funktioniert. Hab folgendes probiert...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var     PicAnalysed : TEvent;
begin
...
PicAnalysed.Create(nil,False,False,'');
PicAnalysed.WaitFor(INFINITE);
PicAnalysed.Free
...
end;


Das Ziel ist es so lange zu warten bis ein anderer Teil des Programs ausgeführt wurde. Da wird das Evnet dann folgendermaßen ausgeführt...
ausblenden Delphi-Quelltext
1:
2:
3:
...
PicAnalysed.SetEvent
...


Ist da n Fehler drin?
Also wenn ich das so starte dann krieg ich folgende Fehlermeldung...
Zitat:
EAccessViolation with Message 'Access violation at Address ... in Module ...
gih9 Threadstarter
Hält's aus hier
Beiträge: 14

Win2000
D5 Prof.
BeitragVerfasst: Mo 19.04.04 16:28 
Hab's selber rausgekriegt. So muss es sein...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var     PicAnalysed : TEvent; 
begin 
... 
PicAnalysed := TEvent.Create(nil,False,False,''); 
PicAnalysed.WaitFor(INFINITE); 
PicAnalysed.Free 
... 
end;


Jedoch funktioniert das jetzt nicht so wie ich es mir vergestellt hatte. Das Program wartet nämlich jetzt unendlich. Der Teil des Programs auf den gewartet werden soll ist also auch gestoppt. Geht das so nicht oder mach ich was falsch? Also vor dem waitfor da lade ich ein Bild. Wenn das dann fertig geladen ist wird das onImageLoaded Event ausgeführt welches seinerseits die Prozedur zur Bildverarbeitung aufruft.
Damit ich mehrere Bilder zusammen auswählen kann und dann eins nach dem anderen zu anylysieren hab ich das mit waitfor versucht...
Irgendwelche Ideen???
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 19.04.04 20:56 
TEvent kapselt das Event Kernel-Objekt, das zur Thread-Synchronisation verwendet wird. Sofern du kein Mutlithreading verwendest legst du mit dem Aufruf von WaitFor deine gesamte Anwendung lahm..!

Du solltest das OnImageLoaded-Ereignis verwenden...

PS: Events unter Delphi haben eine ganz andere Bedeutung als das Kernel-Objekt aus der Win32-API..!

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!