[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