¿Cómo y cuándo se capturan las variables referenciadas en los métodos anónimos de Delphi?

Esto fue impulsado por ¿Cómo comparar TFunc / TProc que contiene la función / procedimiento del objeto?, específicamente por el comentario de David a la pregunta de Barry. Como no tengo un blog para publicar esto, haré esta pregunta aquí y la responderé.

Pregunt: ¿Cuándo y cómo se capturan las variables referenciadas en los métodos anónimos de Delphi?

Ejemplo

procedure ProcedureThatUsesAnonymousMethods;
var V: string;
    F1: TFunc<string>;
    F2: TFunc<string>;
begin
  F1 := function: string
        begin
          Result := V; // references local variable
        end
  V := '1';
  F2 := function: string
        begin
          Result := V;
        end
 V := '2';
 ShowMessage(F1);
 ShowMessage(F2);
end;

AmbosShowMessage van a mostrar2. ¿Por qué? CómoV ser capturado y cuándo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta