Das ist alles doch viel zu kompliziert. Eine Zuweisung von string zu ShortString oder z.B. string[31] und umgekehrt funktioniert aus dem Stand:
Delphi-Quellcode:
program Project598;
{$APPTYPE CONSOLE}
var
nMenu: string;
sMenu: string[31];
begin
nMenu := 'Hello World';
sMenu := nMenu;
Assert(nMenu = sMenu);
sMenu := 'Hello World';
Assert(nMenu = sMenu);
nMenu := sMenu;
Assert(nMenu = sMenu);
end.