[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