Hi Sergey,

On 28-12-2011 17:39, Sergey Alexandrov wrote:
I thought about something like that, but it will not work:

You were right, there were some flaws. I liked the challenge and wanted it to simply work, so here's a working example:


5 = LOAD_REGISTER
5.options = 42  # 32 + 8 + 2: bits 5,3,1

8 = TEXT
8 {
        value = bit5-
        if {
                value {
                        prioriCalc = intval
                        cObject = TEXT
                        cObject.insertData = 1
                        cObject.value = {register:options}%64
                }
                isLessThan = 31
                isGreaterThan = 64
        }
}

9 = TEXT
9 {
        value = bit4-
        if {
                value {
                        prioriCalc = intval
                        cObject = TEXT
                        cObject.insertData = 1
                        cObject.value = {register:options}%32
                }
                isLessThan = 15
                isGreaterThan = 32
        }
}

10 = TEXT
10 {
        value = bit3-
        if {
                value {
                        prioriCalc = intval
                        cObject = TEXT
                        cObject.insertData = 1
                        cObject.value = {register:options}%16
                }
                isLessThan = 7
                isGreaterThan = 16
        }
}
20 = TEXT
20 {
        value = bit2-
        if {
                value {
                        prioriCalc = intval
                        cObject = TEXT
                        cObject.insertData = 1
                        cObject.value = {register:options}%8
                }
                isLessThan = 3
                isGreaterThan = 8
        }
}
30 = TEXT
30 {
        value = bit1-
        if {
                value {
                        prioriCalc = intval
                        cObject = TEXT
                        cObject.insertData = 1
                        cObject.value = {register:options}%4
                }
                isLessThan = 1
                isGreaterThan = 4
        }
}
40 = TEXT
40 {
        value = bit0-
        if {
                value {
                        prioriCalc = intval
                        cObject = TEXT
                        cObject.insertData = 1
                        cObject.value = {register:options}%2
                }
                isLessThan = 0
                isGreaterThan = 2
        }
}

The % (modulo) operator cuts of the higher bits. The tricky part is the way the if properties actually swap the operand around the operator:

if.value = 10
if.isGreaterThan = 11

will result in TRUE because the value of isGreaterThan is greater than the base value.

--
Kind regards / met vriendelijke groet,

Jigal van Hemert.
_______________________________________________
TYPO3-english mailing list
[email protected]
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-english

Reply via email to