Всё правильно. у тебя изначально не установлено значение vs1, а значит она пустая, а значит условие (vs1 = 'Восстановить') не выполняется и цикл пропускается, следовательно, тебе лучше использовать
repeat. Ну или как вариант добавить перед структурой while значение vs1 := 'Восстановить', что бы цикл запустился, и обмотать в begin - end;
Для справки, While - это цикл с предусловием, а repeat - послесловием.
Код:
//задаем начальное значение, и если оно изменилось, то выходим из цикла.
a:=true;
while a do begin
...
if {} then a:=false;
end;
Код:
//Запускаем цикл и пофиг что было изначально
repeat
a:=КакаятоФункция();
until not a;