Pues yo creo que es a causa de un fallo de programación. Si puedes postear la función, le echamos una visual. Creo que es mejor dar por bueno un código antes que empezar a mirar posibles bugs de delphi / windows / etc.
Delphi en sus rutinas más intrinsecas usa GetMem y FreeMem para reservar espacio para las cadenas, es lógico, sin memoria no puede almacenarse una cadena.
PD: Por favor, encierra el código entre
[ delphi ]
aqui vuestro codigo
[ /delphi ]
(sin espacios entre corchetes) Así consigues que respete el identado y aparezca las palabras reservadas en negrita y colores.
Código Delphi
[-]
procedure Saludos();
begin
ShowMessage(' Un saludo y hasta luego');
end;