Am Beispiel einer Fehlermeldung könnte dies vielleicht wie folgt aussehen:
FUNCTION ShowError
LPARAMETERS vError, vMessage, vCode, vLine, vObject
MESSAGEBOX([in Zeile ] + TRANSFORM(m.vLine) + [: ] + ALLTRIM(m.vCode) ;
+ CHR(13) + [ist folgender Fehler aufgetreten:] + CHR(13) ;
+ CHR(13) + ALLTRIM(STR(m.vERROR)) + [ - ] + ALLTRIM(m.vMessage) + CHR(13) ;
+ CHR(13) + [Der Fehler trat in folgendem Objekt auf:] ;
+ CHR(13) + ALLTRIM(m.vObject), ;
0+64+0, ;
[Programminformation])
ENDFUNC
Abgesehen davon, dass es eine ziemlich aufwendige Sache ist, den Code so 'übersichtlich' aufzubereiten, muss auch sichergestellt werden, dass sämtliche NICHT-Alfanumerischen Felder ordnungsgemäß in Zeichenfolgen gewandelt werden.
Zudem ist ein nachträgliches Umformatieren/Ergänzen des Textes eine ziemlich nervige Angelegenheit.
Ein einfacherer Weg einen mit Variablen gespickten Text auszugeben UND diesen ggf. schnell und einfach umzuformatieren besteht im Einsatz von TEXT ... ENDTEXT.
Nutzen wir diese Funktion von Visual FoxPro so sieht die Welt um ein vielfaches einfacher aus:
FUNCTION ShowError
LPARAMETERS vError, vMessage, vCode, vLine, vObject
LOCAL cMyVar
TEXT TO cMyVar NOSHOW ADDITIVE TEXTMERGE PRETEXT 2
in Zeile <<m.vLine>>: <<m.vCode>>
ist folgender Fehler aufgetreten:
<<m.vError>> - <<m.vMessage>>
Der Fehler trat in folgendem Objekt auf:
<<m.vObject>>
ENDTEXT
ENDFUNC
Praktischerweise müssen wir uns keine Gedanken mehr über den Variablentyp machen. VFP wandelt alle in '<< >>' stehenden Variablen automatisch in Strings.
Wichtig ist auf jeden Fall der PRETEXT-Parameter. Hier stehen vier additiv anzugebende Werte zur Verfügung.
1 Entfernt Leerzeichen am Zeilenanfang
2 Entfernt Tabulatoren am Zeilenanfang
4 Entfernt Leerzeilen
8 Entfernt Zeilenvorschübe
Sollen nun alle Leerzeichen, TABS und Leerzeilen entfernt werden so wird als Flagwert 7 (-> 1+2+4) übergeben. ( Die Entfernung von Zeilenvorschüben <8> ist nur für Datenströme empfehlenswert da die Lesbarkeit doch ein klein wenig leidet. )
Keine Kommentare:
Kommentar veröffentlichen