Ah, let me explain a bit more in-depth about how mBlock and the mBot work together. If you start your program with a ‘when [green flag] clicked’ block, you can run the program from within mBlock on your computer. mBlock will send codes over the Bluetooth or WiFi link to the mBot’s firmata (loaded when you do an Upgrade Firmware from the Connect menu). The mBlock and the mBot will communicate over this serial link to exchange information. However, the program is not uploaded to the mBot.
If you start your program with an ‘mBot Program’ block, you can invoke the Upload to mBot mode. This will cause the code generator to translate the Scratch blocks into an Arduino program (in C), then call the Arduino compiler / loader to compiler and load the program to the mBot. This approach allows the mBot to run in a stand-alone mode without being connect physically or wirelessly to the mBot. However, the code generator only generates numerical variables at this time.
This is really not that surprising given the relatively limited amount of available variable memory (SRAM) on the mBot. While there is 2K of SRAM available, the Makeblock library eats about half of that space, so you are really left with about 1K of SRAM. SRAM shortage is one of the common causes of program failure with the ATMega328P microcontroller (the basis of the Arduino Uno and the mBot) and strings can consume a great deal of memory, so that is likely why string support is lacking. You can always use strings if you are programming from the Arduino IDE, but even so, caution is advised.
I hope that helps.
Chuck