[Allegro] Trick 44: Textdateien umcodieren
Bernhard Eversberg
ev at biblio.tu-bs.de
Di Mai 29 08:06:41 CEST 2007
Trick 44: Dateien umcodieren
Aufgabe: Schnell mal eben eine Textdatei von ASCII nach ANSI umcodieren.
Oder allgemeiner: vom Codesystem X ins Codesystem Y.
Warum: Der alte DOS-Zeichencode ASCII gerät zunehmend auf den abstei-
genden Ast. Aber auch ANSI ist nicht von hohem Ewigkeitswert,
denn Unicode dringt immer weiter vor.
Früher schrieb man dafür eine Exportparameterdatei mit den
entsprechenden p-Befehlen, mußte aber zuerst einen Import machen, um
die Textdatei zeilenweise in Datensätze zu verwandeln, die dann z.B.
nur die Kategorie #20 oder #u1 enthielten, um diese dann sofort mit
den Exportparametern wieder ausgeben zu können. Wer hat denn schon
heute noch solchen Durchblick? Oder man griff murrend zu einem
Fremdwerkzeug oder einer Skriptsprache. Nicht jedem stehen aber solche
Wege offen...
Eine "Textdatei" - damit sind Dateien gemeint, die in Zeilen angeordnet
sind, mit Codes 13 10 (oder nur einem von beiden) als Trennung.
Lösung:
Das Einzige, was man jetzt noch braucht, ist eine Liste von p-Befehlen.
Davon sind mehrere schon als Tabellen vorhanden:
(Wenn man hineinschaut, sieht man gleich, wie solche Tabellen aussehen
müssen und wie man sie erstellen und modifizieren kann. Bearbeiten kann
man sie mit Notepad o.a.)
asciansi.apt ASCII -> ANSI
ansiasci.apt ANSI -> ASCII
d.apt ASCII -> RTF
d.npt ANSI -> RTF
d-utf8.apt ASCII -> UTF-8
d-utf8.npt ANSI -> UTF-8 [auch f. HTML]
p-htm.apt ASCII -> HTML
durtf.apt UTF-8 -> ASCII
durtf.npt UTF-8 -> ANSI
Wenn man nun mit B.CFG arbeitet, intern ASCII hat und nach ANSI
umcodieren will? Dann Kopie machen: asciansi.apt -> asciansi.bpt
Wenn die richtige Tabelle erst feststeht, geht es ganz leicht,
sofern man das "final release" von V27.2 hat:
1. Füllhorn / Alles von A-Z / Umcodierung einer Textdatei
(Aufgerufen wird dann filecode.flx)
2. Man wird informiert:
"Sie wählen jetzt zuerst eine Datei aus. Diese wird zeilenweise
gelesen und geschrieben"
Dateiauswahlbox erscheint, Datei wählen (evtl. zuerst Verzeichnis
wechseln)
3. Frage beantworten, die danach kommt:
"Neuer Name für die Datei?"
Dateiname und -pfad ist beliebig
4. Und es kommt noch eine Dateiauswahlbox:
"Wählen Sie eine Codetabelle"
Aus der Liste die korrekte Tabelle (siehe oben) wählen
Verarbeitung wird ausgeführt, Endemeldung:
... verarbeitet, Neue Datei: ...
... Zeilen, ... Bytes
FERTIG!
------------------------------------------------------------------
FLEXperten wollen mehr wissen: Was ist der Trick dabei?
Der FLEX filecode.flx ist abgeleitet von der allgemeineren
Vorlage file.flx (ASCII-Datei zeilenweise lesen+schreiben),
die es schon seit 2004 gibt. Neu ist in V27.2 die Möglichkeit,
Umcodierbefehle zu nutzen: Befehl xcode ... (h xxcode)
Hier die entscheidenden Zeilen:
export p i-1
i-1.apr laden. Diese wird aber nicht als solche gebraucht,
das ist der Trick, sondern nur, weil man eine Tabelle dazuladen
will, in der die Umcodierbefehle stehen:
var "Wählen Sie eine Codetabelle|*." K1 "pt"
fnam
Diese Tabelle zu den Exp.Parametern laden
export t
Danach kann man in der Schleife :loop, die jeweils eine Zeile mit get
aus der Datei liest, dies sagen:
xcode xp
wri
wri n
und es werden die p-Befehle der Exportparameter zum Umcodieren benutzt,
die umcodierte Zeile ausgegeben und ein Zeilenvorschub hinterdrein.
Mehr Informationen über die Mailingliste Allegro