Komisch, du hast Recht ... irgendwie funktioniert das Read in der Console nicht richtig.
Read({char}); wartet bei Eingabe auf ein Enter und hört nicht schon nach Eingabe einer Taste auf.
Dann wird anscheinend das erste Zeichen an die Char-Variable übergeben und den Rest merkt sich Delphi für die nächste Eingabe.
Also bei Zeichen+Enter bleibt ein Enter übrig, welches für die nächste Eingabe genutzt wird,
weswegen das nächste Menü gleich wieder abgebrochen wird.