[Allegro] import mit fx: re wirkungslos?

Sibylle Koczian Sibylle.Koczian at t-online.de
Di Jan 12 18:25:29 CET 2010


Liebe Liste,

ich bin nicht sicher, ob sich der Import von Fremddaten mit fester 
Feldanzahl wirklich so benehmen soll, wie er es tut. Alternativ, wenn 
das Verhalten so ist, wie es sein soll, würde ich gern durchblicken.

Zugrunde liegt eine .csv-Datei: Tabulator als Feldtrenner, Zeilenumbruch 
als Satzende, es ist Windows, also CR LF. Keine eigene Kennzeichnung von 
Textfeldern mit " o.ä. Wie üblich, wenn man so eine Datei mit einem 
Office-Programm erzeugt, gibt es nach dem letzten Feld keinen 
Feldtrenner mehr, sondern nur noch das Satzende. Und das scheint Allegro 
nicht für so normal zu halten wie Excel und Konsorten (hier OpenOffice 
Calc) das tun.

Versuch 1:

re=13 10
fx=7
fe=9

Mit y-Befehlen werden nur ASCII 1 - 8 entfernt, sonst nichts. Keine 
anderen globalen Ersetzungen.

Exportparameter: eine e-1.vpr (unveränderte Kopie der originalen 
e-1.apr, die Konfiguration heißt v).

Ergebnis: Umgewandelt werden der erste und jeder zweite der folgenden 
Sätze. Jeder dieser Sätze enthält in der Kategorie, in die das letzte 
Feld kommt, einen Zeilenumbruch und dann das erste Feld des neuen 
Satzes. Der Rest dieses neuen Satzes erscheint überhaupt nicht im Ergebnis.

Versuch 2:

re=10
fx=7
fe=9

y .13 9          zusätzlich zu den schon vorhandenen y-Befehlen

Ergebnis: jetzt werden alle Sätze umgewandelt, aber das Zeichen ASCII 
10, also LF, wird als erstes Zeichen des neuen Satzes in das 
entsprechende Feld geschrieben.

Erklären kann ich mir das schon: Das Programm liest bis zum 7. 
Tabulatorzeichen (wg. fx=7) alles ein, auch die Zeichenkette von re, 
wenn sie vorher kommt. Ein evtl. vorhandener Rest bis zum nächsten 
Auftreten von re wird ignoriert, mit (und nicht etwa hinter) diesem re 
beginnt der nächste Satz. Stimmt das so? Und soll es wirklich so sein? 
Bei Daten vom Typ C hat man re doch auch nicht am Anfang eines neuen Satzes!

Es geht natürlich mit Variante 3, ohne re:

fx=7
fe=0

y .9 0
y .10 256
y .13 0

Vielleicht könnte der Hinweis zu re im Systemhandbuch (11.2.1., Typ B) 
etwas deutlicher formuliert werden. Denn dass re eben _nicht_ das letzte 
Feldende ersetzen kann, wird zumindest mir daraus nicht klar. Und so 
selten sind Importe aus tab-getrennten Textdateien doch sicher nicht, 
oder doch?

Beste Grüße,
Koczian




Mehr Informationen über die Mailingliste Allegro