[Allegro] Differenzen
Thomas Berger
ThB at Gymel.com
Di Mär 31 18:30:06 CEST 2009
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Lieber Herr Eversberg, liebe Liste,
beim kreieren eines maessig komplexen Flex (Tabelle
mit Rohdaten einlesen, in Suchbegriffe umbauen,
gegen die aktuelle Datenbank testen), habe ich wegen
bekannter a99-Unzulaenglichkeiten (v.a. der schlechten
Moeglichkeit des Abbruchs, wenn etwas schief geht)
mitten drin beschlossen, den Flex auf acon (Version
von heute) umzustricken.
Dabei fiel mir folgende Abweichungen zwischen acon und
a99 besonders unangenehm auf (auch wenn es stellenweise
durch Fehlen des roten "avanti" in den Hilfeseiten
"dokumentiert" ist):
* [Bug in a99, acon korrekt]: Das "get first" nach find scheint
mit dem Zeiger auf der geoeffneten Datei zu interferieren,
ein folgendes "get" liefert nicht die naechste, sondern
die uebernaechste Zeile der Eingangsdatei
* Im konkreten Fall konnte ich mich mit "f1nd" statt "find"
retten, jedoch: acon kennt "f1nd" nicht???.
* nervig (a99 und acon): auf den Erfolg von "f1nd" muss man
mit "if no" testen, auf den Erfolg von "find" kann man nur
mit "if empty", "if g0" etc. testen, jedoch nicht mit "if no".
* acon kennt den praktischen Kurzschluss "if empty" zum Test auf
leere Ergebnismenge nicht
* Nach Einlesen einer mit TAB getrennten Zeile mittels "get"
faellt auf: acon kennt keine Steuerzeichen in Manipulationsbefehlen
wie e"^I" ("^I" dabei fuer Tabulator)
[Das ist wohl ein echter Bug]
* Bei "get" bereinigt acon anders als a99 und die Dokumentation
NICHT das Zeilenende um CR und LF (TAB nicht getestet)
* acon kennt auch nicht fetch ^I und verwandte (evtl. "fetch"
ueberhaupt nicht?)
[Gluecklicherweise funktioniert diese Steuerzeichensyntax bei
ins _^I_|_
sonst waere ich an der Aufgabe komplett gescheitert.
* gebe ich bei acon nicht staendig "find *new" vor den
find-Befehlen, bekomme ich
EXCEPTION-Error (memory-access) in program "acon.exe"
[Das Beduerfnis nach "find *new" laesst schlimmes Ahnen im
Bezug auf das Aufbewahren von Suchergbnissen zwecks spaeterem
Zugriff]
* acon kennt nicht die Moeglichkeit, hinter einem "if"
mehrere Kommandos mit "; " zu verketten.
* acon kennt MB's auf der iV mittels
var (...) nicht, wie etwa in folgender Konstruktion:
if Artic var (b"¬" b"¬" f"' ")
* Die unterschiedliche Semantik von "write" ohne Argument
faellt unangenehm auf:
Diagnostische Ausgabe in a99 etwa erfordert unbedingt eine
Konstruktion mit "var":
var "Processing begins" n; show IV
fuer acon kann ich aber nicht "show IV" durch "write"
ersetzen, sondern habe die Wahl zwischen
var '"Processing begins" n'; write
und
write "Processing begins" n
Zudem scheint write cstring bei "acon" die iV zu zerstoeren.
[Gibt es eine Anwendung, die das unuebliche Verhalten des
"nackten" write unter acon/avanti ausnutzt?]
(Mein Ziel ist, dass der Flex in seiner Endfassung immer
noch sowohl fuer a99 als auch acon funktioniert, die Anzahl
der Stellen mit "if" und Auswertung des Cstring "m" daher
moeglichst gering sein sollte)
* Es ist in a99 sehr hilfreich, die "neuen" Dollar-Variablen zu
nutzen: Erstens weiss man dabei, dass einem die gerade aktiven
Paramterdateien nicht in die Quere kommen koennen, und zweitens
sind "sprechende" Namen doch sehr hilfreich, sofern man einmal
mehr als drei oder vier Variablen benoetigt. Umso aergerlicher,
dass acon sie nicht kennt. Muss es wirklich eine MFC-Klasse sein,
mit der a99 an dieser Stelle den Namensraum verwaltet oder gaebe
es nicht auch andere Loesungen?
* acon erzeugt bei write "string" n auch unter Win32 Zeilenenden
nach Unix-Konvention, also ^J statt ^M^J.
viele Gruesse
Thomas Berger
Nebenbeobachtung zu a99: show +IV sollte das Anzeigefenster
bei Bedarf herunterscrollen.
P.S.: acon von heute Nachmittag findet im Gegensatz zu heute
Mittag .CFG-Datei und Includes nicht mehr im Programmverzeichnis
und behauptet dann "Die Zeile mit den Kategorienummern in Ihrer
.cFG stimmt nicht"
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3-nr1 (Windows XP)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iQCVAwUBSdJFDmITJZieluOzAQL8zAQAkxwvCFvorPpaJPhuYar1uKC3NcrS6FiC
h5WtwsgAM+aS52DwnVP3iRPMmHaKwuldz0LO3hG3saDx/6Tv6ii1IVUi1TcR81Mp
3ovHLC6AaogLZjjWKTxuBPOgXourSJP0amZI/7lMhaHiwXzPnzlWe/MUuN7I6k2I
b9i1lv8Ip4Y=
=9anm
-----END PGP SIGNATURE-----
Mehr Informationen über die Mailingliste Allegro