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

WinXP, Vista
D5, D7, D2005 PE
BeitragVerfasst: So 28.01.07 18:21 
Hallo,

ich habe mir eine eigene Klasse gebastelt, die das NNTP-Protokoll kapselt (Usenet). Die gibt's zwar auch von Indy oder im Netz, aber die haben nicht die Funktionen, die ich gerne hätte.

So, nun zu meinem Problem:

Meine Klasse ist keine Komponente, sondern eine abstrakte Klasse, die vom Typ TThread abgeleitet ist. Es gibt unter anderem eine Eigenschaft bzw. das Ereignis OnStatus, das immer ausgelöst werden soll, wenn sich der Status ändert. Dazu habe ich folgenden Code verwendet (gekürzt):

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
type
  TNNTPThreadStatusEvent = procedure(ThreadID: Integer; Status: Stringof object;

  TNNTPThread = class(TThread)
  private
    fStatus: TNNTPThreadStatusEvent;
  public
    property OnStatus: TNNTPThreadStatusEvent read fStatus write fStatus;
  end;


Im Verlauf meines Codes wird dann das Ereignis z.B. wie folgt ausgelöst:

ausblenden Delphi-Quelltext
1:
2:
3:
  if Assigned(OnStatus) then begin
    OnStatus(fThreadID,'Verbinde mit '+Host+' ...');
  end;


Ja Schade, wird aber nicht ausgelöst. Wenn ich nämlich in den if-Block z.B. ein ShowMessage reinsetze, wird nix angezeigt. Also müsste ja OnStatus = nil sein. Der Code davor und danach wird aber ausgeführt (mittels Haltepunkt ausprobiert).

In meinem Hauptprogramm arbeite ich wie folgt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.NNTPStatus(ThreadID: Integer; Status: String);
begin
  ShowMessage(Status);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  NNTP: TNNTPThread;
begin
  NNTP := TNNTPThread.Create(...);
  NNTP.OnStatus := NNTPStatus;
end;


OnStatus wird also gesetzt, aber wie gesagt, die entsprechende Prozedur (hier NNTPStatus()) wird nicht ausgeführt. Hat irgendjemand eine Idee? Oder vielleicht habe ich auch irgendetwas schlicht und ergreifend falsch gemacht, ich hab immerhin seit locker 6-7 Jahren keine Ereignisse mehr programmiert... :)

Vielen Dank im Voraus.

Gruß -- Andy aka fero
fero Threadstarter
Hält's aus hier
Beiträge: 14

WinXP, Vista
D5, D7, D2005 PE
BeitragVerfasst: So 28.01.07 19:22 
Hat sich erledigt. Hab vergessen, die Ereignisaufrufe zu Synchronisieren... :(