Entwickler-Ecke

Internet / Netzwerk - Bei IdTCPServer Execute Text in ein Memo erfassen


whitef - Fr 29.05.15 11:15
Titel: Bei IdTCPServer Execute Text in ein Memo erfassen
Hallo,
wie so viele andere zuvor wollte ich einen kleinen lan chat basteln.
leider hänge ich nun an der thread verarbeitung. habe mich bereits etwas eingelesen nur finde ich irgendwie nicht den "aha" effekt.
die indy demos habe ich auch benutzt und bin der meinung das diese nicht genug mit threadauslagerung gearbeitet haben. nun gut, zu meinem problem:

folgender code liegt vor:

Delphi-Quelltext
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:
...
uses ... IdGlobal, IdContext, IdSync ...
...
private
      procedure ThreadMsgGet;
...
var   ThreadMsg: string;
...
procedure TFormChatServerControlPanel.IdTCPServer1Execute(AContext: TIdContext);
var
  LLine: String;
begin
  LLine := AContext.Connection.IOHandler.ReadLn(IndyTextEncoding_OSDefault);

  //msg Meldung
    ThreadMsg := TimeToStr(now) + ' - Nachricht empfangen: ' + Copy(LLine, 8, Length(LLine)-7 );
    TIdNotify.NotifyMethod( ThreadMsgGet );
    //Memo1.Lines.Add( ThreadMsg );

    AContext.Connection.IOHandler.WriteLn('msg:::OK');
  end;
end;

procedure TFormChatServerControlPanel.ThreadMsgGet;
begin
  Memo1.Lines.Add( ThreadMsg + '000');
  gbClients.Caption := 'Connected Clients (' + IntToStr(GetClientCount) + '):';
  ThreadMsg := '';
end;

end.


Bei mir im Memo erscheinen lediglich die '000', das heißt das die globale variable 'ThreadMsg' keinen inhalt hat.
gelöscht wird die variable ja erst nach der übergabe an das memo.

Weiß da jemand mehr?
ist das so schon korrekt mit der threadauslagerung?

VG