Как мне использовать переменную типа string в качестве имени процедуры?

Никак. Тем не менее, вы могли бы создать StringList как показано ниже:

    StringList.Create; StringList.AddObject('Proc1',@Proc1);
StringList.AddObject('Proc2',@Proc2);

и затем реализовать это в вашей программе:

    var
myFunc : procedure; begin
if
Stringlist.indexof(S) = -1 then MessageDlg('Не понял процедуру '+S,mtError,[mbOk],0) else begin @myFunc := Stringlist.Objects[Stringlist.indexof(S)]; myFunc; end;

RAM [000697]