Mich für sieht das Ganze wie ein AnsiChar/WideChar-Problem aus.
Ehrlich gesagt habe ich keine Ahnung von Seriellen Ports, aber als ich meine Projekte von Delphi7 auf D2009 umstellt habe sind mir solchen "Hyroglyphen" des öfteren untergekommen.
Versuch doch mal die Variablen
s,ss auf WideString zu deklarieren(mit den verbundenen Folgen für den restlichen Code).
Die Function
Delphi-Quellcode:
cpDrvReceiveData(Sender: TObject; DataPtr: Pointer;
DataSize: Cardinal)
liefert schließlich nur einen Pointer auf eine gewisse Anzahl von Bytes. Wer sagt dir, dass die gelieferten Daten AnsiStrings (Delphi7!) sind!?