Использовать массив вместо строки получилось. И массив этот склеивается нормально (по указателю раз за разом).
Я проверяю это: запускаю обратную функцию MEM.MemMove() и собираю из массива переменную. В этой переменной вижу склеенные части. (в отладке. Строка видна и читабельна. А массив - это набор кодов: там хрен-читаемо...)
В массиве каждый байт занимает две ячейки. Это ведь аналог wstring. Поэтому так.
Но вот на сервер этот массив не отправляется. Или отправляется неправильно.
Я сделал тестовую короткую строку (около 80 символов), на которую сервер гарантированно отвечает коротким тестовым ответом.
Этот ответ не приходит. Увы.
Тут загвоздка:
fbTcpWrite(xExecute:=TRUE, hConnection:=fbTcpClient.hConnection, pData:=ADR(arrDataSend[1]), szSize:=wPointer+2);
Раньше там была ссылка на строку и это работало:
fbTcpWrite(xExecute:=TRUE, hConnection:=fbTcpClient.hConnection, pData:=ADR(sDataSend), szSize:=TO_DWORD(STU.StrLenA(ADR(sDataSend)) + 1));