[Allegro] AVANTI:EOR - mal da, mal nicht da
Sibylle Koczian
Sibylle.Koczian at t-online.de
Mi Jun 15 14:51:37 CEST 2011
Lieber Herr Berger, liebe Liste,
Am 15.06.2011 13:25, schrieb Thomas Berger:
>> - "n" bzw. "newline" im Job erzeugt CR LF (jedenfalls, wenn Server und Browser
>> oder sonstiger Client unter Windows laufen, andere Varianten habe ich noch nicht
>> ausprobiert).
>
> das ist ja etwas, das acon mit sich selbst ausmacht und sollte
> daher hoechstens von der Plattform von acon (und / oder
> avanti) abhaengen.
>
> soeben getestet: Scheint (derzeit) stets CRLF zu sein.
>
>
>> - "help" und "help available" haben nur LF in der Ausgabe.
>
> soeben getestet: stimmt.
>
Wozu dieser Unterschied gut sein soll, ist mir unklar. Mir schiene es
besser, wenn mehrzeilige Ausgaben, die acon selbst verantwortet, den
gleichen Zeilentrenner benutzen würden, wie ihn "newline" erzeugt.
Parameterdateien stehen wohl zwangsläufig auf einem anderen Blatt.
>
>> - Hinter dem AVANTI:EOR kommt noch CR LF.
>
> soeben getestet: Das ist tatsaechlich plattformabhaengig...
>
> Hier muessen Sie bei Tests also besonders darauf achten, nicht
> vom ueberfluessigen bzw. fehlenden CR verwirrt zu werden (je nach
> Plattform von avanti ist bei).
>
"... ist beides möglich)", war es so gemeint? Mir war in diesem
Zusammenhang in erster Linie wichtig, ob _irgendein_
Zeilenumbruchskonstrukt noch nach dem AVANTI:EOR kommt.
>
>> Stimmt das alles so oder habe ich aus irgendeinem Job-Ergebnis einen falschen
>> Schluss gezogen?
>
> D.h. wir haben Konstrukte, die plattformabhaengig LF oder CR LF
> liefern, und solche, die plattformunabhaengig stets LF liefern
> und wieder andere, die plattformunabhaengig CRLF liefern: Supi.
>
Stimmt. An dieser Stelle bin ich über .NET nicht unerfreut, die
StreamReader.ReadLine-Methode interpretiert alle drei Konstrukte als je
einen einzelnen Zeilenumbruch. Jedenfalls sagt das die Dokumentation.
Mein eigentliches Problem hat sich wieder mal als etwas ganz anderes
herausgestellt: ich hatte beim Lesen der Avanti-Antwort nicht explizit
auf AVANTI:EOR getestet, sondern auf StreamReader.Peek() < 0 als Ende
der Antwort. Und das stimmt nicht, das kann durchaus auch mal vor dem
Eintreffen von AVANTI:EOR zutreffen - und vermutlich wohl auch mitten in
der Antwort?
Sehe ich jetzt richtig: eine Antwort von Avanti ist zu Ende, wenn die
Schlussmeldung eingetroffen ist. Alles andere, einschließlich "kein
Zeichen zum Lesen da" oder wohl auch "keine Daten verfügbar" oder "Ende
des Streams" ist uninteressant.
Dank und Gruß,
Koczian
Mehr Informationen über die Mailingliste Allegro