Color of the text:
add the red,green,blue parameters in the text object declaration:
TEXT* namensfeld =
{
pos_x=21;
pos_y=350;
layer=20;
font = goth;
red = 1;
green = 1;
blue = 1;
string(Karten_name);
flags=VISIBLE;
}
By the way: your function for the input is ugly coded

If you really want to use a while loop then have a global variable which can be set to terminated that while loop.
Or (even better):
Use the button_number of the field (they would need to be buttons and sitting on one panel) to save the input in the right string.