Ersatz für Sign() Funktion
Verfasst: 14.07.2013 20:22
In einem Makro wollte ich die Funktion Sign() verwenden, um auf einer einzigen Zeile folgende Zuweisung zu realisieren:
wenn b ungleich der Konstante c ist, so soll a zu 0 werden und
wenn b gleich der Konstante c ist, so soll a zu 1 werden
In meinem Programm sind a und b Felder vom Typ .a, dass möchte ich nicht ändern.
Das Makro nimmt sehr viele Zuweisungen vor, deshalb ist es für die Lesbarkeit des Codes günstig, wenn jede Zuweisung auf einer Zeile erfolgt.
Die Sign() Funktion arbeitet leider nicht (was ich vorausgesetzt hatte) mit dem Typ .a zusammen (immer diese Meckerei von PureBasic
).
Das einzeilige IF THEN ELSE scheint es auch nicht zu geben.
Typwandlungsbefehle (um das Ergebnis von b&#c in Fließkomma zu wandeln und dann der Sign() Funktion unterzuschieben) habe ich in der Hilfe keine gefunden.
Bliebe die umständliche Wandlung über Zeichenketten
Das funktioniert offensichtlich.
Gibt es evtl. noch eine elegantere Lösung?
wenn b ungleich der Konstante c ist, so soll a zu 0 werden und
wenn b gleich der Konstante c ist, so soll a zu 1 werden
Code: Alles auswählen
#c=2
Define.a a,b
b=0
a=Sign(b&#c) ; wenn b<>c ist, so soll a=0 werden
b=2
a=Sign(b&#c) ; wenn b=c ist, so soll a=1 werden
Das Makro nimmt sehr viele Zuweisungen vor, deshalb ist es für die Lesbarkeit des Codes günstig, wenn jede Zuweisung auf einer Zeile erfolgt.
Die Sign() Funktion arbeitet leider nicht (was ich vorausgesetzt hatte) mit dem Typ .a zusammen (immer diese Meckerei von PureBasic

Das einzeilige IF THEN ELSE scheint es auch nicht zu geben.
Typwandlungsbefehle (um das Ergebnis von b&#c in Fließkomma zu wandeln und dann der Sign() Funktion unterzuschieben) habe ich in der Hilfe keine gefunden.
Bliebe die umständliche Wandlung über Zeichenketten
Code: Alles auswählen
#c=2
Define.a a,b
b=0
a=Sign(ValF(StrU(b&#c)))
Debug a
b=2
a=Sign(ValF(StrU(b&#c)))
Debug a
Gibt es evtl. noch eine elegantere Lösung?