AW: [Allegro] dos

Thomas Berger ThB at Gymel.com
Fr Nov 20 10:36:37 CET 2009


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Lieber Herr Fischer, liebe Liste,

> Das sind alles mögliche Konstruktionen, aber mir behagt es nicht,
> irgendwelche Datei zu schreiben und zu lesen, um Ergebnisse zu bekommen; die
> natürliche Methode im FLEX-Umfeld wäre, dass das Ergebnis in der internen
> Variablen landet.
> Und es geht mir hier nicht um Batch-Dateien, sondern um Konsolprogramme (wie
> acon.exe oder sort.exe), da gibt es wohl keinen Errorlevel. Den Aufruf des
> Programms in eine Batchdatei zu packen, die das Ergebnis in eine Datei
> schreibt, um es dann mir FLEX zu lesen finde ich unnötig kompliziert.
> Ich hätt's halt gern elegant...

Dass Programme in der Windows-Welt oft keine "vernuenftigen" Exitcodes
liefern, ist eine alte Klage. Allegro-Programme liefern manchmal welche,
das ist allerdings nicht dokumentiert und auch nicht konsistent (srch
liefert sogar einen differenzierten Errorlevel bei "nichts gefunden",
speziell bei echten Problemen (Index voll etc.) gibt es aber oft nur
ganz banalen "Erfolg". Am wichtigsten ist natuerlich der Errorlevel 255(?),
mit dem das Betriebssystem uebermittelt, dass der eigentliche Aufruf
nicht geklappt hat ("Befehl oder Dateiname nicht gefunden").

Einem "call" (Starten und warten) stehen alle diese Exit-Informationen
zur Verfuegung (und auch cmd.exe kann mit "exit /b nnn" den Errorlevel
setzen, die Moeglichkeiten sind in NT-Systemen also durchaus gegeben),
mit "if no" bzw. "if error" kann man allerdings nicht alle 256
moeglichen Werte testen.

Ein "Call" (Starten als Separater Prozess) kann moeglicherweise noch
den "harten" Error "Befehl oder Dateiname nicht gefunden" abfangen,
alle anderen naturgemaess nicht.
Das spraeche dafuer, nach call/Call als "if error" nicht den Exit-Status
"nicht 0" sondern nur den speziellen Status "255" testbar zu machen
(und "nicht 0" als "if no", was bei "Call" dann immer dasselbe liefert
wie "if error", bei "call" evtl. aber abweichende Resultate)

Bei "call" stelle ich mir vor, dass anschliessend in der iV der konkret
gelieferte Exitcode als Text stehen koennte (evtl. aber "" statt "0").

Wg. acon: das Flex-Builtin "STOP" benutzt die iV, um ggfls. ein Folge-
programm zu starten. Man koennte ueberlegen, hier eine erweiterung
einzubauen: Enthaelt die iV bei STOP eine Zahl, so wird das nicht
als Programmname aufgefasst sondern als zu setzendes Errorlevel, das
sollte beim Einbinden von acon-Aufrufen in Stapelateien fuer
umfassendere Ablaeufe eine hervorragende Moeglichkeit zur Ablauf-
steuerung bieten.


viele Gruesse
Thomas Berger
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3-nr1 (Windows XP)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQCVAwUBSwZjJWITJZieluOzAQKdSwQAoyL1zYl+0VaKOyBRR1HWYWcPOjtk1kAh
/d2wJO7pubMgRI/SCdEEqh2l62JBnhaeRlekmLP1fbZaS3k5izfhibZcUeywfqf7
JcDwJ6hm5EJljbXMsps9nSyt3V5a/Y0JgumOykkMBHETndov6BNXVj1iPbyA4iBz
V8WCLe5zdzI=
=l+4f
-----END PGP SIGNATURE-----



Mehr Informationen über die Mailingliste Allegro