It would be better to keep the strings NULL terminated. Every time you add a character, add a NULL. As it is, you only append a NULL to Tmessage when an F is received. No F, no NULL.
Remember, serial data arrives ssslllooowwwlllyyy. Loop may be called several million times between the first character arriving and the F arriving. Well, it would if those silly delay()s weren't there.
Your indenting makes it unclear exactly when Hmessage is NULL terminated.
Now, please try again to explain what the problem is, including where the serial data comes from.