Seltsames Detail um get/ansi/ins/write herum
Bernhard Eversberg
ev at buch.biblio.etc.tu-bs.de
Mo Feb 9 10:30:26 CET 2004
On 8 Feb 04, at 10:09, Heinrich Allers wrote:
> xport f aus.rtf\write Fdisphead.rtf
> open ein.txt\get\ansi
>
> //Variante 1 (funktionierend):
> write\write n
> //Variante 2 (nicht für A-Umlaut funktionierend):
> ins #ux2\write #ux2 n
>
> write "}"\close\close x
> h aus
>
> Das riesige Rätsel, das sich mir stellt, ist, warum Variante 1 für
> _alle_ Zeichen der Eingabedateizeile funktioniert, bei Aktivierung von
> Variante 2 dagegen (Deaktivierung von Variante 1) das Ä (A-Umlaut)
> _nicht_ richtig (also nicht als Ä) dargestellt wird!!!
Was passiert beim FLEX-Befehl "ins #nnn" ?
Wenn wir den momentanen Inhalt der internen Variablen mal iV nennen, dann:
1. Es wird #nnn iV gebildet und so uebergeben, als haette
man dieses von Hand eingetippt
Wenn man was von Hand eintippt, ist es aber ANSI! Ein FLEX
ist jedoch, nimmt das Programm als Default an, ASCII.
(Durch Setzung von set c1 kann man das aendern!)
Also wandelt es den iV-Inhalt zuerst automatisch in ANSI und uebergibt
das dann an die Eingabeverarbeitung.
2. Die Eingabe aus dem Schreibfeld erhaelt also, wie gesagt, ANSI
und wird dann nach ASCII gewandelt, weil es im Arbeitsspeicher so
sein muss.
Wenn eine ASCII-Datei mit get gelesen wird, ist es genau so, wie wenn
der Text im ASCII-codierten FLEX steht.
Fazit 1:
get/insert muss ohne "ansi" angewendet werden, weil das schon
automatisch im "insert" enthalten ist.
ALSO:
get
ins #ux2
get/write muss mit "ansi" gemacht werden, denn das Eingelesene
ist ASCII und write macht keine automatische Umcodierung, daher
muss man sie explizit veranlassen.
ALSO:
get
ansi
write
Fazit 2:
Es liegt kein Bug vor, sondern die Sache ist wohlueberlegt.
MfG
B.E.
Bernhard Eversberg
Universitaetsbibliothek, Postf. 3329,
D-38023 Braunschweig, Germany
Tel. +49 531 391-5026 , -5011 , FAX -5836
e-mail B.Eversberg at tu-bs.de
Mehr Informationen über die Mailingliste Allegro