Hallo zusammen!
Ich hab eine kleine Komponente geschrieben, in der ein Thread vorkommt, der wiederrum ein Ereignis ausgibt. Hab allerdings zwei Probleme:
1. bekomme ich für die Überprüfung des Events mit
assigned immer true zurück
2. (hängt wahrscheinlich mit 1. Problem zusammen) eine Fehlermedlung "ERROR 5 - Zugriff verweigert"
Delphi-Quellcode:
unit Test;
interface
uses
SysUtils, Classes, Windows, SyncObjs;
type
TOnMsgRec =
procedure(Sender: TObject)
of object;
TCompoTest =
class(TComponent)
private
FOnMsgRec: TOnMsgRec;
procedure ThreadProc;
public
protected
published
procedure RunTest;
property OnMsgRecieved: TOnMsgRec
read FOnMsgRec
write FOnMsgRec;
end;
var
ThdH: THandle;
ThID: cardinal;
procedure TCompoTest.RunTest;
begin
ThdH:= BeginThread(
nil, 100, TFNThreadStartRoutine(@TCompoTest.ThreadProc),
nil, 0, ThID);
end;
procedure TCompoTest.ThreadProc;
begin
if assigned(FOnMsgRec)
then // <--- da kommt immer "true" heraus
OnMsgRec(self);
// <-- nun kommt die Fehlermeldung*
end;
end.
(* is irgendwie klar, da ja im Hauptprog dem Event nichts zugewiesen wurde)
Hab die ganze Sache bisschen gekürzt. Es wird allerdings sonst nie das Event OnMsgRec benützt oder geändert.
Vielen Dank für eure Hilfe