[Allegro] Kontrolle der Eineindeutigkeit von o-Umschl.-Dateien

Bernhard Eversberg ev at biblio.tu-bs.de
Mo Sep 26 11:45:02 CEST 2005


Einige Bemerkungen.

Die Tabelle o.apt hat einfach die folgende Aufgabe:

Jedem DOS-Zeichen, das innerhalb der Daten vorkommen kann, soll der 
entsprechende Windows-Code zugeordnet werden, damit man in der 
Auswahlliste und im Schreibfeld bzw. Formular das richtige Zeichen 
sieht. Hat man diese Tabelle korrekt eingerichtet, ist sie automatisch 
eineindeutig! D.h. es gibt dann keine Fälle, wo zwei DOS-Zeichen ein und 
demselben Windows-Zeichen zugeordnet sind. Die Rückcodierung mittels
derselben Tabelle vom Windows-Eingebafeld in den Arbeitsspeicher
funktioniert also ebenfalls fehlerfrei.

Nun gibt es aber im DOS-Code Zeichen im Bereich 179-218, die sog. 
Rahmensymbole, die als Textzeichen in allegro-Daten nicht vorkommen
sollten, aber nicht verboten sind. Diese habe keine Entsprechung im
Windows-Code. Im Windows-Code kann man die Werte unter 32 nicht
benutzen und auch einige zwischen 128 und 160 sind problematisch.
Daher konnten wir den Windows-OstWest-Code nicht so definieren, daß
auch die DOS-Rahmensymbole alle einen Platz hätten finden können.
Diese fielen deshalb unter den Tisch und werden ja auch nicht
gebraucht.

In der o.apt haben wir die Rahmensymbole alle dem Code 127 zugeordnet.
Diese Zeilen sind im Sinne obiger Bemerkungen streng genommen
überflüssig.
Hätten wir das aber nicht gemacht, käme z.B. folgendes raus:
Code 186 würde dann unter Windows unverändert als Code 186 erscheinen,
das ist der Ringel. Bei der Rück-Codierung einer Eingabe in den
DOS-Code wird aus 186 aber 207, denn der 207 wird 186 zugeordnet. D.h.
der in DOS gar nicht erwünschte Code 186 würde in einen gültigen Code
verwandelt.
Der Code 127 wird im Windows-Code nicht verwendet, kann also nicht
mit einem Zeichen belegt werden. Wenn in den DOS-Daten folglich ein
Rahmensymbol auftaucht, wird es bei der Rückwandlung dem Code 217
zugeordnet, das ist der letzte in o.apt zugeordnete Wert, der deshalb
wirksam wird. (Es ist die rechte untere Ecke eines Einfach-Rahmens.)
Die Rahmensymbole werden also alle in dasselbe Rahmensymbol verwandelt.

Ein Problem mit o.apt sollte man NUR dann haben, wenn man Rahmensymbole
für irgendwelche Zwecke tatsächlich in den Daten verwendet hat. Einen
allgemeinen Rat dafür wissen wir nicht.

Zur Prüfung der Eindeutigkeit braucht man weder FLEX noch Perl:
Man sortiere o.apt an Position 3 bzw. 8 und schaue sich
die sortierte Datei an: Duplikate fallen dann ins Auge.








Mehr Informationen über die Mailingliste Allegro