The TEXT() macro is looking for a string of TChar literals, and only a string of TChar literals, which you are not getting when you pass in the variable directly. Printf is also looking for a TChar string, but it has a little more flexibility in terms of formatting and will allow you to dereference a variable to obtain the data the variable contains.
I performed a simple test on the second option, and I believe it should meet your needs. You may even be able to remove the inner-most parentheses, but I did not go that deep in my test. Please let me know if you run into any problems with this and I can run some more thorough tests.