[Allegro] a99: Problem mit mittellangen Zeilen bei get
Bernhard Eversberg
ev at biblio.tu-bs.de
Fr Dez 9 12:33:33 CET 2011
Am 09.12.2011 07:58, schrieb Bernhard Eversberg:
>
> Sollten wir also mal versuchsweise die Codes 13 und 10 drinlassen? Sie
> stehen ja zwangsläufig nur am Ende einer "Zeile", weil "get" an der
> Stelle das Lesen beendet.
> Wenn wir nun noch einbauen, daß bei if %...% auch Steuerzeichen
> möglich sind, wie bei (b"...") usw., also ^M für 13 und ^J für 10,
> könnte man deren Präsenz leicht mit if %^M% etc. abprüfen und
> die Zeichen, wenn's denn sein soll, mit var (F"^M^J") wegnehmen.
>
> Ich denke, das wäre die einfachste Lösung und würde wohl bestehende
> Anwendungen nicht beschädigen.
>
Versuchsweise ist das jetzt mal so eingebaut. Ein entsprechend
variiertes a99.lzh liegt unter "aktuelle-version" bereit.
(Versionsnummer V31.12)
Es folgt ein kurzes Skript getfile.flx als Beispiel.
Die angefragte Datei, beliebig lang, wird zeilengetreu kopiert, auch
wenn die Zeilen länger als die jetzt eingestellte Puffergröße von 8K
sind. Die gelieferten Zeilen können mit 10 oder 13 10 beendet sein,
gespeichert wird immer 13 10.
Dazu wird die neue Möglichkeit von if %...% genutzt, wie man
sieht, um ein Flag zu setzen für den Zeilenvorschub. Ist es nicht
gesetzt, ist die betr. "Zeile" nur eine Fortsetzung der vorangegangenen.
getfile.flx : Eine Datei aus dem Internet holen und abspeichern
2011-11-09 Nur als Muster! Nur ab a99 V31.12
Es koennen beliebig lange "Zeilen" auftreten
Aufruf: X getfile <url>
ins $url
var $url
Die "Datei" oeffnen (kann auch eine dynamische sein)
open
Datei soll dann inter.dat heissen
open x inter.dat
:loop
Flag ruecksetzen
#uzv
"Zeile" holen
get
kam nix mehr?
if cancel jump ende
sonst in $g ablegen
ins $g
if %^M% #uzv 1
if %^J% #uzv 1
13 und 10 am Ende weg und "Zeile" ausgeben
var $g (F"^M^J")
wri
Nur wenn #uzv, dann Zeilenwechsel
if #uzv wri n
jump loop
:ende
close
close x
fsize inter.dat
ins $fs
Fertigmeldung
var "Datei inter.dat liegt bereit, Umfang: " $fs
mes
Mehr Informationen über die Mailingliste Allegro