Como sugerencia te puedo decir que agregues un try..finally a tu código.
Código:
var
cad: PChar;
begin
GetMem(cad, SizeOf(char)*Length(ed.text)+1);
Try
if DdeClientConv1.PokeData(dnombre.DdeItem, strpcopy(cad,ed.Text)) then
ShowMessage('pokebien');
finally
FreeMem(cad);
end;
end;
Con respecto al resto, me parece que estas complicando el tema, porqué no haces cambios sutiles para que tu aplicación, sin tener que usar tecnologías externas, inserte datos en forma repetitiva?
Saludos!