COM - Не совпадение типов
☑
0
DirectMaster
05.09.12
✎
10:09
День добрый. Нужна небольшая помощь помощь. Пишу свою внешнюю компоненту. Есть там такая функция:
SendAndRecieveData([in] CHAR* hostName, [in] LONG* port, [in] CHAR* data, [out,retval] CHAR* fileName);
При обращении к ней из 1С:
Компонент.SendAndRecieveData(АдресСервера, ПортСервера, ДанныеНаОтправку, ИмяФайла);
Радует сообщением:
Ошибка при вызове метода контекста (SendAndRecieveData): Типы не совпадают (1)
АдресСервера - строка, ПортСервера - Число (Пробовал также INT*, USHORT*). ЧЯДНТ?
1
eklmn
гуру
05.09.12
✎
10:10
число вместо строки отправляешь походу
2
Рэйв
05.09.12
✎
10:19
или строку вместо числа в порт
3
DirectMaster
05.09.12
✎
10:23
Проверено в отладчике:
АдресСервера - Тип Строка
ПортСервера - Тип Число
Вопрос вдогонку - Сколько в 1С бит в типе Число? Может из-за этого?
4
Рэйв
05.09.12
✎
10:29
(3)Врядли из-за этого. Ты по любому даже long зашкаливаешь, так что неявно приведется к long
5
Рэйв
05.09.12
✎
10:29
НЕ зашкаливаешь
6
AKWoland
05.09.12
✎
11:52
Одного меня смутило то, что число по указателю функция принимает?
7
DirectMaster
05.09.12
✎
12:25
С числом все в порядке.
Метод научного тыка показал, что такая конструкция:
SendAndRecieveData([in] LONG* port) работает как надо.
а вот если сделать так SendAndRecieveData([in] CHAR* hostName), то опять появляется ошибка. Т.е. проблема в передаче строк.
Пробовал TCHAR* - не помогло.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.