Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi ReadLn und ReadBuffer (https://www.delphipraxis.net/25354-readln-und-readbuffer.html)

endeffects 5. Jul 2004 11:40


ReadLn und ReadBuffer
 
Hallo,

ich bin noch relativ neu im Umgang mit Delphi und arbeite
zur Zeit an einem Programm das mit einem Server interagiert.

Das Problem das ich habe ist das der Server seine Antworten
teilweise auf mehrere Packete verteilt die sich auch mit
Antworten anderer Requests überschneiden können.

Bisher fange ich alle Antworten über einen Timer und ReadLn ab:

Code:
procedure TForm.TimerTimer(Sender: TObject);
var
  s: string;
begin
  s := IdTCPClient.ReadLn(#0, 5);
  if s <> '' then
    Memo1.Lines.Add(s);
end;
Allerdings friert die Anwendung dann für kurze Zeit ein
sofern es sich um größere Datenpackete handelt und
die Ausgabe erfolgt nur verzögert. Ich denke der Einsatz
von ReadBuffer(); wäre in diesem Fall sinnvoller
nach allem was ich dazu gelesen habe.

Ich weiß allerdings nicht so recht wie ich diese Anweisung
einbinden soll und wie ich die empfangenen Daten nach
Schlüsselwörtern auswerten kann um dann entsprechend
andere Funktionen auszuführen.

Könnte mir dazu vielleicht Jemand ein Beispiel geben?


mfg

Mirilin 5. Jul 2004 12:18

Re: ReadLn und ReadBuffer
 
:hi:

Ich weiss nicht, aber vielleicht hilft dir TIdAntiFreeze. :)


Klick


mfg Tobias

endeffects 5. Jul 2004 12:24

Re: ReadLn und ReadBuffer
 
naja, nicht wirklich ehrlich gesagt,
eine verbesserung erreich ich damit nicht,
eher das gegenteil

maximov 5. Jul 2004 13:04

Re: ReadLn und ReadBuffer
 
Zitat:

Zitat von endeffects
Hallo,...Bisher fange ich alle Antworten über einen Timer und ReadLn ab:
...

Wenn mich nicht alles täuscht, dann generieren die indy-compos eigene events, in denen du dann lesen solltest. Wenn du einen timer nimmst, wartet der lesevorgang so lange, bis da daten kommen. Allerdings können während dessen schon weiter timer aufrufe erfolgt sein...oder so! Indy hab ich ewig nicht gemacht, aber timer kommen mir da spanisch vor :wink:

MrKnogge 5. Jul 2004 13:34

Re: ReadLn und ReadBuffer
 
endeffects, welche Delphi-Version benutzt du ?

Falls du Delphi7 benutzt, liegt der Fehler wohl darin, das es sich hierbei um einen Fehler der standardmäßig installierten Indy-Komponennte handelt.

endeffects 5. Jul 2004 13:37

Re: ReadLn und ReadBuffer
 
hallo,

nein ich hab die indy version schon aktualisiert und nutze
nun die 9er auf delphi 7

endeffects 5. Jul 2004 14:09

Re: ReadLn und ReadBuffer
 
hallo,

also ich hab eine bestehende server verbindung
und sende einen request an den server und
möchte ich die antwort in ein memo packen,
nun weiß ich allerdings nicht wie ich abfrage
ob der buffer lesbar ist, zur zeit wird die
anwendung mit einem exception fehler abgebrochen

Code:
procedure TForm.Button1Click(Sender: TObject);
var cb: string;
begin
  with IdTCPClient do
    begin
      try
        Write(request');
        //if ???readable(2000)??? = true then begin
             ReadBuffer(CB, SizeOf (CB));
             Memo.Lines.Add(cb);
        //end;
      except
        on E : Exception do
          ShowMessage(E.Message);
      end;
    end;

endeffects 5. Jul 2004 14:18

Re: ReadLn und ReadBuffer
 
ich hab das ganze nu nochmal bissel abgeändert:

Code:
procedure TForm.Button1Click(Sender: TObject);
var cb: string;
begin
  with IdTCPClient do
    begin
      try
        Write(request');
        if IOHandler.Readable(1000) then
        begin
          ReadBuffer(CB, SizeOf(CB));
           if SizeOf(CB) > 0 then
           begin
            Memo2.Lines.Add(CB);
           end;
         end;
erzeugt allerdings eine zugriffsverletzung die ich nicht
nachvollziehen kann

endeffects 5. Jul 2004 15:04

Re: ReadLn und ReadBuffer
 
es ist zum verzweifeln, hat denn hier niemand ahnung davon?

Aenogym 5. Jul 2004 15:19

Re: ReadLn und ReadBuffer
 
ich verzweifle auch bald.
sockets sind blöd und die indies kapier ich irgendwie nicht. gibt es nicht ein tolles einsteiger-tutorial für indy (das von delphi-sourc.de bringt's irgendwie net...)?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:17 Uhr.
Seite 1 von 2  1 2      

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