AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi [Indy10] ReadLn bei Client im Thread
Thema durchsuchen
Ansicht
Themen-Optionen

[Indy10] ReadLn bei Client im Thread

Ein Thema von glkgereon · begonnen am 11. Feb 2007 · letzter Beitrag vom 11. Feb 2007
Antwort Antwort
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

[Indy10] ReadLn bei Client im Thread

  Alt 11. Feb 2007, 10:43
Hi,

Ich habe vor eine Art Chat zu schreiben.
Dazu ist es natürlich von Nöten dass der Server auch mal was an den Client schickt. Aber wie?

Ich habe mich jetzt ein halbes wochenende durch jegliches Beispiel gelesen, welches Ich zu Indy10 gefunden hab und dazu NICHTS gefunden.
Die einzige Lösung, die Indy10 bereit hält ist offensichtlich folgende:

Delphi-Quellcode:
Client.IOHandler.WrtieLn('Hallo');
Res:=Client.IOHandler.ReadLn;
Das ist natürlich extrem praktikabel und total sinnvoll *Ironie bis Galgenhumor*

Was ich brauche ist im Prinzip ein Event welches ausgelöst wird sobald der Client eine Nachricht empfangen hat.

Ich habe mal in einer Randbemerkung etwas von einem Thread gehört mit welchem das gehen soll...
Das habe ich so versucht:
(Ich muss direkt dazu sagen dass ich mit Threads noch nicht die große Ahnung hab....)
Delphi-Quellcode:
procedure TClientThread.Execute;
var L: String;
begin
  Self.Priority:=tpLower;
  while not Terminated do
  begin
    Sleep(100);
    if not Assigned(FIO) then Continue;
    L:=FIO.ReadLn;
    ShowMessage(L);
    if Assigned(FOnInput) then FOnInput(L);
  end;
end;
Delphi-Quellcode:
//OnCreate der MainForm
  CT:=TClientThread.Create(True);
  CT.Suspend;
  CT.OnInput:=OnClientInput;
  CT.IOHandler:=Client.IOHandler;
  CT.Resume;
Nun ist es nur leider so dass offensichtlich im Thread nichts passiert...
Auch wenn ich nach dem Sleep eine hübsche ShowMessage einbaue: nix

Wenn ich dann versuche das ganze wieder zu beenden mit
Delphi-Quellcode:
  CT.Suspend;
  CT.Terminate;
  CT.Free;
Hängt das Programm....




Woran liegt das?
Geht das mit den Indys vielleicht nicht doch einfacher?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von p0w3r5tr34m3r
p0w3r5tr34m3r

Registriert seit: 18. Aug 2003
Ort: Monheim am Rhein
153 Beiträge
 
RAD-Studio 2009 Pro
 
#2

Re: [Indy10] ReadLn bei Client im Thread

  Alt 11. Feb 2007, 10:54
versuch doch mal Application.ProcessMessages vor dem sleep() Command
Florian Cülter
ich bin ein notorischer alles-klein-schreiber!

der 100. Beitrag nach 3 Jahren 25 Wochen und einem Tag
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#3

Re: [Indy10] ReadLn bei Client im Thread

  Alt 11. Feb 2007, 11:06
Zum einen ändert es nichts
Zum anderen wäre es ziemlich unsinnig einen Thread zu nehmen wenn ich dann noch Application.Processmessages mache (oder sehe ich das falsch )
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 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