Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Noch 2 Indy Fragen ^^ (https://www.delphipraxis.net/70400-noch-2-indy-fragen-%5E%5E.html)

thetrue 29. Mai 2006 20:45


Noch 2 Indy Fragen ^^
 
nabend:

Delphi-Quellcode:
procedure Tmain.Timer1Timer(Sender: TObject);
var
  i:integer;
  frm:Tform;
begin
  timer1.Enabled := false;
  for i:=0 to 255 do
    begin
      if Tserv(main.MDIChildren[i]).getthread = rthread then
        begin
          frm := Tserv(main.MDIChildren[i]).getwid;
          Tserv(frm).txt.Text :=Tserv(frm).txt.Text+rthread.Connection.ReadChar;
          exit;
        end;
    end;
end;

procedure Tmain.serverExecute(AThread: TIdPeerThread);
begin
rthread := AThread;
timer1.Enabled := true;
end;
so versuche ich etwas zu lesen, was von dem Client gesendet wird ;)
aber dann hängt die ganze Anwendung ... WIESO?

Delphi-Quellcode:
procedure Tmain.timerTimer(Sender: TObject);
var
  frm: TForm;
begin
  timer.Enabled := false;
  frm := Tserv.Create(Application);
  Tserv(frm).mkthread(tmpthread);
  Tserv(frm).Caption := 'IP: '+tmpthread.Connection.Socket.Binding.PeerIP+'|Channel: ';
  tmpthread := nil;
  {for i:=0 to 255 do
  begin
    if Tserv(main.MDIChildren[i]) = frm then
      begin
        Tserv(main.MDIChildren[i]).mkthread(tmpthread);
        exit;
      end;
  end; }
end;
wenn ein zweiter Client connected, dann wird bei dem zweitem und dem ersten Child der Gleiche Thrad übenohmen ... WARUM?

---Bernhard--- 29. Mai 2006 21:02

Re: Noch 2 Indy Fragen ^^
 
Kann dir zwar auf die Frage nicht direkt antworten, aber warum machst du es nicht ganz einfach mit OnExecute?

SirThornberry 29. Mai 2006 21:03

Re: Noch 2 Indy Fragen ^^
 
Gib deinem Beitrag bitte einen aussagekräftigen Titel. Desweiteren gilt: Pro Thread nur eine Frage.

inherited 29. Mai 2006 21:24

Re: Noch 2 Indy Fragen ^^
 
Wenn du ReadChar auf diese weise benutzt, wartet dein programm solange bis etwas geschickt wird.
Mach das ganze entweder in einem extra-thread oder, es gibt imho auch eine nRead-function mit timeout


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz