Yo te recomiendo lo que usa QuickReport y es encerrar las variables entre llaves (ya que es un carácter que se usa poco)
Código:
{Nombrecliente}
{direccion}
{codigoPostal} {poblacion} ({provincia})
Estimado {NombreCliente}, es un placer ......
Ahora sólo tienes que hacer un ReplaceAll
Código Delphi
[-]
Memo1.Text := StringReplace(Memo1.Text, '{NombreCliente}',' Pepe Martinez', [rfReplaceAll]);
Las palabras a sustituir puedes guardarlas en una tabla, archivo ini o similar.
Saludos