Strings sind ab D2009 per Voreinstellung als
Unicode definiert. Du stülpst nun einem
Unicode-String ein PChar über, was schon mal uncool ist. Denn Der PChar sieht nun das
Unicode-Zeichen '1', was intern als 31 00 dargestellt wird. Nun ist 00 das String-Ende und -wupps- hast Du dein einzelnes Zeichen.
Schreib einfach die SendPipeMessage um, sodaß Du dort (
Unicode- oder
Ansi-)Strings übergibst. In der Routine selbst nimmst Du die notwendigen Konvertierungen vor, um der
WinAPI-Funktion die richtigen Parameter zu übergeben.