Podemos hacerlo de forma parecida a como se hace en C. Reservamos una porcion de memoria, y copiamos el contenido del string en ella.
Donde tu haces
Código:
Pstate:=PChar(sState);
Yo haria
Código:
GetMem(Pstate,lenght(sState)+1);
StrCopy(Pstate,PChar(sState));
Y recuerda que despues de usar el valor devuleto hay que liberar la memoria que ya no necesitamos.
Código:
txtSSGetDocListRespDoc.Text := String(SsuperState);
FreeMem(Sstate);
El codigo acabo de escribirlo ahora sobre la marcha y espero no haberme equivocado, de todas formas ya te puedes hacer una idea de como se haria.