AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi ReadLn und ReadBuffer
Thema durchsuchen
Ansicht
Themen-Optionen

ReadLn und ReadBuffer

Ein Thema von endeffects · begonnen am 5. Jul 2004 · letzter Beitrag vom 5. Jul 2004
Antwort Antwort
Seite 1 von 2  1 2      
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#1

ReadLn und ReadBuffer

  Alt 5. Jul 2004, 11:40
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
  Mit Zitat antworten Zitat
Benutzerbild von Mirilin
Mirilin

Registriert seit: 21. Dez 2002
Ort: Lenzburg
861 Beiträge
 
Delphi 6 Professional
 
#2

Re: ReadLn und ReadBuffer

  Alt 5. Jul 2004, 12:18


Ich weiss nicht, aber vielleicht hilft dir TIdAntiFreeze.


Klick


mfg Tobias
Tobias
Die Physik ist für die Physiker eigentlich viel zu schwer.
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#3

Re: ReadLn und ReadBuffer

  Alt 5. Jul 2004, 12:24
naja, nicht wirklich ehrlich gesagt,
eine verbesserung erreich ich damit nicht,
eher das gegenteil
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#4

Re: ReadLn und ReadBuffer

  Alt 5. Jul 2004, 13:04
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
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#5

Re: ReadLn und ReadBuffer

  Alt 5. Jul 2004, 13:34
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.
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#6

Re: ReadLn und ReadBuffer

  Alt 5. Jul 2004, 13:37
hallo,

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

Registriert seit: 27. Jun 2004
450 Beiträge
 
#7

Re: ReadLn und ReadBuffer

  Alt 5. Jul 2004, 14:09
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;
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#8

Re: ReadLn und ReadBuffer

  Alt 5. Jul 2004, 14:18
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
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#9

Re: ReadLn und ReadBuffer

  Alt 5. Jul 2004, 15:04
es ist zum verzweifeln, hat denn hier niemand ahnung davon?
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: ReadLn und ReadBuffer

  Alt 5. Jul 2004, 15:19
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...)?
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:27 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