-
Использовать массив вместо строки получилось. И массив этот склеивается нормально (по указателю раз за разом).
Я проверяю это: запускаю обратную функцию 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));
-
Ну откуда же нам знать просто по тексту, хотя бы онлайн показывали. А так зачем к длине прибавляет двойку, не выходит ли это за диапазон массива и соответственно ошибочная отправка.
-
Вложений: 2
не встретил проблем и с wstring
на скрине то что получает ПК с контроллера и сам проект во вложении
Вложение 64494
-
Спасибо. Буду разбираться.