Сфера анонимных методов

Хорошая вещь в анонимных методах заключается в том, что я могу использовать локальные переменные в вызывающем контексте. Есть ли какая-то причина, почему это не работает для выходных параметров и результатов работы?

function ReturnTwoStrings (out Str1 : String) : String;
begin
  ExecuteProcedure (procedure
                    begin
                      Str1 := 'First String';
                      Result := 'Second String';
                    end);
end;

Конечно, очень искусственный пример, но я столкнулся с некоторыми ситуациями, когда это было бы полезно.

Когда я пытаюсь скомпилировать это, компилятор жалуется, что он "не может захватить символы". Кроме того, я однажды получил внутреннюю ошибку, когда попытался сделать это.

РЕДАКТИРОВАТЬ Я просто понял, что это работает для нормальных параметров, таких как

... (List : TList)

Разве это не так проблематично, как в других случаях? Кто гарантирует, что ссылка все еще указывает на живой объект всякий раз, когда выполняется анонимный метод?

Ответы на вопрос(4)

Ваш ответ на вопрос