AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Unbekannte Anzahl an Zeilen auslesen + unerwartete Textzeile
Thema durchsuchen
Ansicht
Themen-Optionen

Unbekannte Anzahl an Zeilen auslesen + unerwartete Textzeile

Ein Thema von -lx- · begonnen am 22. Jul 2006 · letzter Beitrag vom 1. Aug 2006
Antwort Antwort
Seite 2 von 2     12   
-lx-
(Gast)

n/a Beiträge
 
#11

Re: Unbekannte Anzahl an Zeilen auslesen + unerwartete Textz

  Alt 31. Jul 2006, 00:50
Mal eine Frage...

Mir ist nicht klar was folgende Attribute (?) vom ReadLn machen.

Zitat:
#0 - Default Line Feed (#10)
LF - Line Feed (#10)
CR - Carriage Return (#13)
EOL - End-of-line (Carriage Return + Line Feed)
Z.B. EOL: Wenn das Ende der gesendete Reihe eingetroffen ist, passiert was ?
Oder heißt es wenn das Ende des gesamten geendeten Textes der sich jedoch über mehrere Zeilen erstreckt am Ende ist, passiert was ??


Dies ist mir nicht klar.

Der Code sehe doch so aus oder? :

ReadLn('EOL', 2000) Also bei "end of Line" passiert etwas und vosichthalber ist ein ein Timeout von 2000 eingebaut.


Es wäre echt klasse wenn ihr mi das mal erläutern könntet. Aus der englischen Beschreibung werde ich nicht schlau.



mfg
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#12

Re: Unbekannte Anzahl an Zeilen auslesen + unerwartete Textz

  Alt 31. Jul 2006, 08:46
Guten Morgen.

Deine Bemühungen um einen low level Zugriff auf das MAIL Protokoll können nur erfolgreich sein, wenn du die Protokoll-Spezifikation studierst. Die maßgeblichen RFCs sind in der Indy-Dokumentation angegeben.

Zumindest ansatzweise musst du das schon gemacht haben, da du ansonsten die Verben nicht kennen würdest um mit dem Server zu kommunizieren. In der Spezifikation solltest du aber auch etwas zum message format finden. Der Server beendet mehrzeilige Nachrichten immer mit einer letzten Zeile, die nur einen Punkt enthält.

Nun kannst du entweder in einer Schleife mit ReadLn() solange lesen, bis das du diese letzte Zeile empfangen hast - oder du verwendest gleich die Methode Capture().

Der Aufruf von ReadLn() müsste mit den Standardargumenten funktionieren, der line terminator ist dann #10 (LF, line feed). Der Effekt ist, dass dir eine String zurückgeliefert wird, sobald dieses Zeichen im Eingabepuffer entdeckt wird. Auf diese Weise erhältst du jede Zeile einer mehrzeiligen Nachricht einzeln. Ich habe es nicht ausprobiert, aber eventuell erreichst du ein besseres Ergebnis mit ReadLn(EOL), weil dann kein CR an die zurückgelieferte Zeile angehängt wird. Auf keinen Fall kann ReadLn('EOL') funktionieren. Du solltest selbst erkennen warum nicht.

Grüße vom marabu
  Mit Zitat antworten Zitat
-lx-
(Gast)

n/a Beiträge
 
#13

Re: Unbekannte Anzahl an Zeilen auslesen + unerwartete Textz

  Alt 31. Jul 2006, 13:22
Hallo und danke für deine Antwort! =)

Mit den RFC-Befehlen hab eich mich bereits befasst und über Telnet funktioniert es ja auch prima!

Nicht jede Nachricht die vom Server gesendet wird, endet mit einem Punkt
Wenn man sich die LIST ausgeben lässt dann endet diese mit einem Punkt. Aber USER oder PASS oder STAT endet mit keinem Punkt.
Wenn man dann eien Nachrcht öffnet endet diese auch mit einem Pukt am Ende. Jedoch der Text innerhalb auch. Daher wäre das mit dem Überprüfen eines Punktes etwas umständlich. Würde aber funktionieren. Ich werde es mal ausprobieren.

Jedoch scheint mir die Variante mit LF und EOL auf eien gewissere Art eleganter.


Wenn ich die ' ' entfernen, sagt er mir dass jene "undefenierte Bezeichner" sind. -> Edit: Ich muss diesen Zahlencode mit #-Zeichen angeben, oder? LF: #10 ; EOL: #13 + #10 Oder ?


ReadLn empfängt immer nur eien Zeile ohne "Return" aus dem gesmaten gesendeten Text, oder ?
Und Capture empfängt alles, so wie ich das verstandne habe !?


Edit: Also wenn ich 2mal ReadLn habe und beiden das Argument #13+#10 übergeben habe (EOL) und ich eien einzeiligen Zexz erhalte passiert was ? das erste ReadLn liest den Text und gibt ihn gegebenfals wo aus. Jedoch wenn das 2. ReadLn nun lesen will kommt jedoch nichst wartet das programm. Also was bringt dann dieses EOL ? Wie kann ich dies überprüfen? Wird dies am Ende jeder textgefüllten Zeile angehängt oder in jeder leeren Zeile ???



Ich weis dass das vile Fragen sidn aber ich weis nicht wo ich sonst nachschlagen könnte bzw. wo ich es danna uch verstehe. Und da bietet sich solch ein Forum am Besten an.


Mit freundlichen Grüßen
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#14

Re: Unbekannte Anzahl an Zeilen auslesen + unerwartete Textz

  Alt 1. Aug 2006, 18:19
Hallo.

Zitat von -lx-:
Nicht jede Nachricht die vom Server gesendet wird, endet mit einem Punkt
Ich hatte das auch nur für mehrzeilige (variabel lange) Nachrichten behauptet. Vermutlich liefern die Befehle USER, PASS und STAT keine solchen Nachrichten.

Zitat von -lx-:
Wenn man dann eien Nachrcht öffnet endet diese auch mit einem Pukt am Ende. Jedoch der Text innerhalb auch.
Hier kann ich dir nicht folgen.

Zitat von -lx-:
Wenn ich die ' ' entfernen, sagt er mir dass jene "undefenierte Bezeichner" sind.
Die Konstanten sind in der Unit IdGlobal definiert - einfach mit USES einbinden.

Zitat von -lx-:
ReadLn empfängt immer nur eien Zeile ohne "Return" aus dem gesmaten gesendeten Text, oder ?
Und Capture empfängt alles, so wie ich das verstandne habe !?
So verstehe ich die Beschreibung, aber durch Probieren verschaffst du dir letzte Klarheit.

Zitat von -lx-:
Also wenn ich 2mal ReadLn habe und beiden das Argument #13+#10 übergeben habe (EOL) und ich eien einzeiligen Zexz erhalte passiert was ? das erste ReadLn liest den Text und gibt ihn gegebenfals wo aus. Jedoch wenn das 2. ReadLn nun lesen will kommt jedoch nichst wartet das programm.
Ich denke du weißt aufgrund des RFC ob du mit einer einzigen oder mehreren Zeilen als Antwort rechnen musst. Bei einzeiligen Antworten wirst du kein zweites ReadLn aufrufen und bei mehrzeiligen Antworten wirst du Capture verwenden.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 04:34 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