Ich hab da auch noch was um eine Zahl in einen Bitstring umzuwandeln.
| z := Eingabe; |
| t := ""; |
| @for(i := 2147483648; i >= 1; i := i / 2; t:= t + @If(!@IsNumber(z);"-";z >= i;@Do(z := z-i; "1");"0")); |
| t |
In die Variable "z" kommt die umzuwandelnde Zahl, in "t" steht nach Durchlauf der @For-Schleife ein 32-Bit String.
Am Besten als berechnetes Feld in die Maske rein machen, Vergleiche in den Hide-Formeln kann man dann bequem mit
| @Like(t;"_____________________________1__") |
| |
machen, ob ein bestimmtes Bit gesetzt (bzw mit 0 nicht gesetzt) ist.
Gruß
Roland
/edit: Erklärung
| z:= Zahl |
| i := 2^31 |
| |
| Solange i (i durchläuft alle 2er-Potenzen) |
| prüfe ob z eine Zahl ist, wenn nein gib "-" aus (Fehlerbehandlung) |
| prüfe ob z >= i ist (dann ist das entsprechende Bit gesetzt) |
| und ziehe z ab und gib "1" aus |
| ansonsten gib "0" aus |
| i := i / 2 (nächste 2er Potenz) |
| next |
| |
| Obige Schleife wird nun 32 mal ausgeführt und gibt für jedes Bit eine 1 oder 0 (bzw. "-" für ungültig) aus. |