[Allegro] Alphanumerischer Vergleich (if <"#nnn")
Thomas Berger
ThB at Gymel.com
Mo Apr 19 01:47:14 CEST 2010
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Heinrich Allers schrieb:
> Im mit 'h xif' aufzurufenden Hilfetext xif.rtf steht:
>
> if >#nnn command
> if <#nnn command
> Wenn die iV größer bzw. kleiner als der Inhalt von #nnn ist,
> wird command ausgeführt. Wenn der Inhalt von #nnn in "..."
> eingeschlossen ist, wird alphanumerisch verglichen,
> sonst numerisch.
>
>
> Ich bin mit dem alphanumerischen Vergleich nicht klargekommen; entweder habe ich was falsch
> verstanden oder es liegt wirklich ein Fehler vor.
Darueber ist dokumentiert
if >"abc" command avanti
if <"abc" command
Wenn die iV als Zeichenkette alphanumerisch größer bzw. kleiner als "abc"
ist, wird command ausgeführt.
Achtung : hier als Begrenzer nur " erlaubt, nicht ' .
D.h. die Formulierung "Wenn der /Inhalt/ von #nnn in '...' eingeschlossen
ist" (Hervorhebung von mir) ist genau so gemeint und folgendes, ziemlich
asymmetrische Beispiel reflektiert das:
//#ux1 wird 'a', #ux2 wird 'b' zugewiesen:
#ua1a\#ua2"b"
var #ua1\if >#ua2 var #ua1 " groesser als " #ua2;mes
var #ua1\if <#ua2 var #ua1 " kleiner als " #ua2;mes
#ua1b\#ua2"a"
var #ua1\if >#ua2 var #ua1 " groesser als " #ua2;mes
var #ua1\if <#ua2 var #ua1 " kleiner als " #ua2;mes
liefert 'a kleiner als "b"' und 'b groesser als "a"'
("symmetrisch" hingegen liefert
#ua1"a"\#ua2"b"
var #ua1\if >#ua2 var #ua1 " groesser als " #ua2;mes
var #ua1\if <#ua2 var #ua1 " kleiner als " #ua2;mes
#ua1"b"\#ua2"a"
var #ua1\if >#ua2 var #ua1 " groesser als " #ua2;mes
var #ua1\if <#ua2 var #ua1 " kleiner als " #ua2;mes
genau so verwirrend
'"a" kleiner als "b"' und '"b" kleiner als "a"'
denn hier wird '"' mit dem Buchstaben verglichen)
umgekehrt sind sowohl "a" als auch "b" 'groesser' als "#":
#ua1a\#ua2b
var #ua1\if >"#ua2" var #ua1 " groesser als " #ua2;mes
var #ua1\if <"#ua2" var #ua1 " kleiner als " #ua2;mes
#ua1b\#ua2a
var #ua1\if >"#ua2" var #ua1 " groesser als " #ua2;mes
var #ua1\if <"#ua2" var #ua1 " kleiner als " #ua2;mes
liefert "a groesser als b" und "b groesser als a"
Mir scheint, dass a99 hier die Erwartung, dass Vergleichsoperatoren
vergleichbares vergleichen sollen (also die "symmetrische" Situation),
ziemlich krass verfehlt, aber das kennen wir ja schon von "if =#nnn",
das ja auch nicht auf Gleichheit testet...
viele Gruesse
Thomas Berger
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iJwEAQECAAYFAkvLmgIACgkQYhMlmJ6W47MF2wP9F25clatoVcZJZVuhySvdHxT4
yFDyFKLpvBNGtwvhkocAZbUXq5m37Dl1kOCJGaU0OconykQhvddIigHzlORffEl+
iypn/8Uk3pA77J5W4Yfg7Z0OECq6yaSYNa2BYTcYdkodwplWALMeYw5AwI/qlafl
HQfsj0q2qFLmxvPAtJs=
=c0DL
-----END PGP SIGNATURE-----
Mehr Informationen über die Mailingliste Allegro