|
| Indy TCP Fra : Harald |
Dato : 10-01-04 21:20 |
|
Hej
Nogen der ved hvordan man finder ud af om der er modtaget data i en Indy
TIdTCPClient, jeg har prøvet forskellige Read??? metoder med de hænger alle
sammen uanset hvilken timeout værdi jeg benytter?
Jeg bruger Delphi 7 og Indy 9.00.10
Mvh
HK
| |
PØLLE (10-01-2004)
| Kommentar Fra : PØLLE |
Dato : 10-01-04 22:02 |
|
Hej Harald
> TIdTCPClient, jeg har prøvet forskellige Read???
Jeg kender ikke så meget til Indy, men i stedet til Winshoes.
Der er i Winshoes let forståelige eksempler til alle komponenterne.
Her kan du måske finde fiduser, som du kan bruge.
Winshoes kan du hente her
http://www.nevrona.com/Indy/download/Winshoes7.html
PØLLE
| |
Harald (11-01-2004)
| Kommentar Fra : Harald |
Dato : 11-01-04 00:20 |
|
"PØLLE" <NONAME@ME.DK> skrev i en meddelelse
news:40006863$0$27418$edfadb0f@dread16.news.tele.dk...
> Hej Harald
>
> > TIdTCPClient, jeg har prøvet forskellige Read???
>
> Jeg kender ikke så meget til Indy, men i stedet til Winshoes.
>
> Der er i Winshoes let forståelige eksempler til alle komponenterne.
> Her kan du måske finde fiduser, som du kan bruge.
>
> Winshoes kan du hente her
> http://www.nevrona.com/Indy/download/Winshoes7.html
Winshoes er en meget gammel version, Indy 9.0.14 er den nyeste. Men jeg har
fundet løsningen, efter at have opdateret til 9.0.14 så virker det. Det var
åbenbart en fejl i ReadLn og Timeout, egentlig lidt bekymrende at der kan
være sådan en simpel fejl i version 9.
Mvh
HK
| |
Stig Johansen (11-01-2004)
| Kommentar Fra : Stig Johansen |
Dato : 11-01-04 05:22 |
|
Harald wrote:
> Det var åbenbart en fejl i ReadLn og Timeout, egentlig lidt bekymrende at
> der kan være sådan en simpel fejl i version 9.
Ja, og derfor foretrækker jeg selv Synapse.
< http://www.ararat.cz/synapse/>
Det er ikke 'visuelle' komponenter, men kvalieten er god.
--
Med venlig hilsen
Stig Johansen
| |
Ulrik Vadstrup (11-01-2004)
| Kommentar Fra : Ulrik Vadstrup |
Dato : 11-01-04 18:14 |
|
"Harald" <news10@-REMOVE-THIS-kroning.dk> wrote in message
news:40005e5c$0$27428$edfadb0f@dread16.news.tele.dk...
> Hej
>
> Nogen der ved hvordan man finder ud af om der er modtaget data i en Indy
> TIdTCPClient, jeg har prøvet forskellige Read??? metoder med de hænger
alle
> sammen uanset hvilken timeout værdi jeg benytter?
>
> Jeg bruger Delphi 7 og Indy 9.00.10
>
> Mvh
> HK
>
Hej Harald
Jeg havde noget liggende i en text fil, du kan jo se om det er noget du kan
bruge.
Der kører i en tråd, hvilket jo er en gode ide ;)
unit ClientUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, StdCtrls;
type
TReadThread = class(TThread)
public
constructor Create(IndyClient: TIdTCPClient);
private
FIndyClient: TIdTCPClient;
FMessage: String;
procedure DisplayString;
protected
procedure Execute; override;
end;
TForm1 = class(TForm)
IdTCPClient1: TIdTCPClient;
Memo1: TMemo;
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure IdTCPClient1Connected(Sender: TObject);
procedure IdTCPClient1Disconnected(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
tr: TReadThread;
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{ TReadThread }
constructor TReadThread.Create(IndyClient: TIdTCPClient);
begin
FIndyClient := IndyClient;
inherited Create(false);
end;
procedure TReadThread.DisplayString;
begin
Form1.Memo1.Lines.Add(FMessage);
end;
procedure TReadThread.Execute;
begin
while not Terminated and FIndyClient.Connected do
begin
FMessage := FIndyClient.ReadLn('.');
Synchronize(DisplayString);
end;
end;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
IdTCPClient1.Host := 'localhost';
IdTCPClient1.Port := 9999;
IdTCPClient1.Connect;
end;
procedure TForm1.IdTCPClient1Connected(Sender: TObject);
begin
Memo1.Lines.Add('[Connected]');
tr := TReadThread.Create(IdTCPClient1);
end;
procedure TForm1.IdTCPClient1Disconnected(Sender: TObject);
begin
if IdTCPClient1.ClosedGracefully then
Memo1.Lines.Add('[Disconnected gracefully]')
else
Memo1.Lines.Add('[Disconnected abruptly]');
tr.Free;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (key = #13) then
begin
IdTCPClient1.Write(Edit1.Text);
end;
end;
end.
| |
Harald (11-01-2004)
| Kommentar Fra : Harald |
Dato : 11-01-04 20:30 |
|
"Ulrik Vadstrup" <blackend@FJERNMIGblackend.dk> skrev i en meddelelse
news:bts031$3ee$1@news.cybercity.dk...
> "Harald" <news10@-REMOVE-THIS-kroning.dk> wrote in message
> news:40005e5c$0$27428$edfadb0f@dread16.news.tele.dk...
> > Hej
> >
> > Nogen der ved hvordan man finder ud af om der er modtaget data i en Indy
> > TIdTCPClient, jeg har prøvet forskellige Read??? metoder med de hænger
> alle
> > sammen uanset hvilken timeout værdi jeg benytter?
> >
> > Jeg bruger Delphi 7 og Indy 9.00.10
> >
> > Mvh
> > HK
> >
> Hej Harald
>
> Jeg havde noget liggende i en text fil, du kan jo se om det er noget du
kan
> bruge.
> Der kører i en tråd, hvilket jo er en gode ide ;)
<klip>
Problemet var en fejl i Indy 9.00.10, efter en opdatering til 9.00.14 virker
det.
Mvh
HK
| |
|
|