PChar schonmal garnicht.
Entweder PAnsiChar oder PWideChar.
Denn der LongString (AnsiString) ist nicht kompatibel, da man in 2009 die Typ intern um zwei neue Felder erweitert hat (CharSize und CodePage),
also ein schreibender Zugriff geht überhaupt nicht und maximal kann ein älteres Delphi den neueren Stringtypen auslesen, aber nicht andersrum.
Bezüglich SharedMem brauchst du natürlich auf beiden Seiten eine kompatible Version. (so könnte man z.B. jeweils ein aktuelles FastMM in beide Programmteile integrieren)
Alternativ zu PAnsiChar/PWideChar ginge natürlich noch der WideString, wofür schon ein eigenes SharedMem gibt. (OleAut32.dll)