Diferencia entre Initialize (), Default () y FillChar ()

Digamos que tiene un registro local que le gustaría inicializar:

type 
  TMyRec=record
    Val1, Val2:Integer;
  end;

procedure MyProc;
var
  MyVar:TMyRec;
begin
  // ... ?

  WriteLn(Val1,Val2);
end;

Además de configurar cada campo "manualmente", hay varias formas de hacerlo.

UtilizarInicializar():

Initialize(MyVar);

UtilizarDefecto():

MyVar := Default(TMyVar);

UtilizarFillChar:

FillChar(MyVar,SizeOf(MyVar),0);

Define un vacíoconstante, y asigna eso a la var

const cMyVar:TMyVar=();  
...    
MyVar := cMyVar;    

Lo anterior todo parece funcionar en situaciones como este ejemplo. Supongo que incluso podrías definir una variable global para inicializarla.

¿Pero hay un método preferido? ¿O hay ciertas situaciones en las que no se recomienda usar cualquiera de los anteriores, o donde simplemente no funciona?

En pocas palabras, ¿cuál es el definitivo?Manera correctatm Cómo inicializar una variable de pila local? :-)

Respuestas a la pregunta(1)

Su respuesta a la pregunta