![]() |
Unbekannte Anzahl an Zeilen auslesen + unerwartete Textzeile
Hallo.
Ich such mir die Finger wund. Immer wenn ich denke dass ich gleich ne Lösung gefundne habe werd ich wieder enttäuscht. Also ich schreibe gerade ein kleines Mailprogramm das vorerst mit der Indy TCP Client Komponente arbeitet. Wenn ich etwas an den Mailserver mit WriteLn schicke wird immer sofort vom Server etwas zurückgeschcikt. Somit kann ich gleich im Anshcluss die gesendete Zeile lesen. Jedoch wenn ich dann mir die Liste an verfügbaren Mails anzeigen lassen will, zeigt e rimme rnur die erste zeiel an. Wie also kann ich die Gesamtanzahl an Zeilen ermitteln oder kede Zeile empfangen ohne zu wissen wie viele gesendet werden? Noch eine Frage: Wie kann ich denn mit "readln" reagieren, wenn eine unerwartete Textzeile gesendet worden ist bzw. vom Client empfangen werden soll? Man kann doch nicht immer mit readln auf der Lauer liegen und mit nem Timer als das Netz auslegen? Mit freundlichen Grüßen |
Re: Unbekannte Anzahl an Zeilen auslesen + unerwartete Textz
Weis da niemand etwas dazu? Oo
Also mit ner Schleife würde es theoretisch gehen nur wenn nichts mehr gesendet wird dann wartet er und der Programmfluss wird angehalten. mfg |
Re: Unbekannte Anzahl an Zeilen auslesen + unerwartete Textz
Hilft dir die Funktion AllData weiter? Je nach Version sollte die im Client direkt oder im Socket-Handler sein.
|
Re: Unbekannte Anzahl an Zeilen auslesen + unerwartete Textz
Kurze Frage: Wieso nimmst Du nur die "reinen" TCP-Komponenten und nicht gleich die Mail-Komponenten von Indy oder ICS? Die Probleme du du jetzt selbst hast sind doch in diesen spezialisierten Komponenten schon gelößt.
|
Re: Unbekannte Anzahl an Zeilen auslesen + unerwartete Textz
Dies wäre die Prozedur:
Delphi-Quellcode:
Dies funktioniert. Jedoch sobald man Inhalte abruft die mehrere Zeilen überspannen, wird imme rnur die erste zeiel abgeholt. Wenn man den befehlö nochmals abschickt wird die nächste zeiel geholt usw.
procedure PRead();
var temp: String ; begin temp:= '' ; temp:= IdTCPClient1.ReadLn ; Memo1.Lines.Add(temp); end; Schon störrend. Das mit "AllData" funktioniert nicht so ganz. Der erwartet gleich am Anfangs cheinbar mehr Inhalt und bleibt stehen. Warum nicht gleich mit der Pop3Komponente? Ja da ist mein Lehrer dran shculd. Der meinte man solle es doch erstmal so versuchen undd ann auf Pop3 umsteigen. Ich wollte es so halt erst versuchen da ich dneke so ist es vll. einfacher mit dem Verstehen als gleich schon ne neue Komponente verwenden. mfg |
Re: Unbekannte Anzahl an Zeilen auslesen + unerwartete Textz
Zitat:
|
Re: Unbekannte Anzahl an Zeilen auslesen + unerwartete Textz
also weis wer was ?
Der VAter meiner Freundinn meinte, dass sobald etzwas fertig gesendet wordne ist, ein "EOF" mitgesendet wird. Wie kann ich denn überprüfen ob sowas gesendet worden ist? Ich dneke dass e s"unsichtbar" also nicht in dem normalen String drinne steht. mfg |
Re: Unbekannte Anzahl an Zeilen auslesen + unerwartete Textz
Hat da wirklich keiner eine Idee?
Oder ist die MAsse SOnntags nicht erreichbar!? ;) Es müsste doch gehen... weil der Server schickt doch alles nach und nach... und es müsste eben sowas geben wie "Wenn etwas reinkommt, dann readln". mfg |
Re: Unbekannte Anzahl an Zeilen auslesen + unerwartete Textz
Du musst wahrscheilich einen Timer nehmen. :wink: Hast du dir mal die Parameter von Readln angesehen? Einer davon ist ATimeout. Das heißt, wenn nach einer bestimmten Zeit nichts kommt, bricht er ab. Dann prüfst du nach jedem Empfangen, ob was da ist. Wenn nicht, müsste alles empfangen sein (ich weiß ja nicht, vielleicht fängt er von vorne an).
|
Re: Unbekannte Anzahl an Zeilen auslesen + unerwartete Textz
Zitat:
Also dieses TimeOut Ding würde in Verbindung mit einem Timer gut funktionieren, da man ja eig. aus schleifen nicht einfach aussteigen sollte außer ich nehm ne repeat-until bzw. do-while schleife. Wie geht das aber nun mit diesem EOL ? scheint eine etwas elegantere Methode zu sein. Jedoch werd eich aus der Hilfe dazu (s.o.) nicht schlau. Es liegt vll. daran, dass ich Delphi direkt gelernt habe. D.h. es wurde kein Wert darauf gelegt, wie der Syntax zu stand ekommt und wieso usw... das mal am Rande. Mit freundlichen Grüßen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr. |
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