Well its been a while since I used the glcd flashstring stuff.
While its usage is currently poorly and perhaps even incorrectly documented and the compilation errors are
quite confusing when not used properly, it actually does work.
The main reason that it is so odd is that as of Arduino 0022 flash strings are not supported by the arduino print class
This means that the glcd library has to extend the print class or implement it outside the arduino print class.
Currently the library implements support for printing flash stings outside the print class.
And because the glcd library is c++ it can't play some of the casting games that can be done in C
to hide some of the needed casts.
won't work because the Arduino print class does not support flash strings.
doesn't work because the glcd library printFlash() function was written to only work for strings in flash memory.
The above call/declaration is not using a flash string. While the string is in flash program memory it is
still copied to RAM, which is defeating the point of printFlash(). So if you call it as above, there is no
printFlash() function to process a "normal" string stored in RAM.
The real answer would be to update the Arduino Print class or extend it to know about flash strings.
But for now that isn't the case.
So in order to print strings in flash memory you have a few options.
GLCD.printFlash(flashStr("your string here"));
GLCD.printFlashln(flashStr("your string here"));
GLCD.Puts_P(PSTR("your string here"));
GLCD.Printf_P(PSTR("your string here"));
Hope that helps.
I'll update the documentation to indicate how to properly use these functions
and in the mean time look at alternatives for making it simpler and more integrated
with the arduino print class.