Имя: Пароль:
1C
1С v8
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* - не помогло.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший