Передача параметров

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
SSTA
Бывалый
Сообщения: 52
Зарегистрирован: 03 Февраль 2006, 5:41
Откуда: Хабаровск

Передача параметров

Сообщение SSTA »

Здравствуйте.
Занялся переводом app с 6.1. на 6.3. Для этого решил пересобрать SmtpLib.dll Д.Осипова.

Ситуация:

map
module('wsock32.dll')
....
Connect_SMTP(UnSigned, *SockAddr_in,Signed),Signed,Raw,Pascal,name('Connect')
....
end

Вызов

EMail_SendMail PROCEDURE
SockAddr_in GROUP(Email_SockAddr)
END
E_Socket unsigned
......

Синтаксическая ошибка на:
if Connect_SMTP(E_Socket,SockAddr_in,len(SockAddr_in))<0
.....
No matching prototype available на первый параметр
и
Parameter type has wrong scope: SockAddr_in на второй

Видимо, что-то связано с изменениями при передаче параметров от 6.1. к 6.3, потому что под 6.1. проблем нет.
Help'a к 6.3 у меня нет, так что надеюсь на подсказку сообщества.
C уважением, Александр Т.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8032
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Сообщение Игорь Столяров »

Ага ... я тоже долго не мог въехать, чего это оно вдруг ...

Потом понял, что используемые в описании параметров процедур типы данных должны быть описаны ДО описания MAP структуры, где описаны вызовы процедур (раньше можно было описывать типы данных в любом месте).

Проще говоря, перенеси в DLOBAL DATA описание типов данных:

SystemTimeType GROUP,TYPE
wYear USHORT
wMonth USHORT
wDayOfWeek USHORT
wDay USHORT
wHour USHORT
wMinute USHORT
wSecond USHORT
wMilliseconds USHORT
END

lpWSAData GROUP,TYPE
wVersion SIGNED
wHighVersion SIGNED
szDescription CSTRING(257)
szSystemStatus CSTRING(129)
iMaxSockets USHORT
iMaxUpdDg USHORT
lpVendorInfo LONG
END

Email_SIN_ADDR GROUP,TYPE
S_ADDR ULONG
END

Email_SockAddr Group,TYPE
SIN_FAMILY SHORT
SIN_PORT USHORT
IN_ADDR Group(Email_SIN_ADDR)
END
SIN_ZERO CSTRING(8)
END

и соответсвенно удали их в процедуре работы с SMTP.
И все будет хорошо ... :)
SSTA
Бывалый
Сообщения: 52
Зарегистрирован: 03 Февраль 2006, 5:41
Откуда: Хабаровск

Сообщение SSTA »

Спасибо, всё ОК
C уважением, Александр Т.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8032
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Сообщение Игорь Столяров »

В этом никто не сомневался. Но осадок остался ... ;)
Правила изоляции типов данных были изменены SV, что называется "в тихую".
Всегда внимательно читаю пресс-релизы о выходе обновлений Clarion, но нигде этого не упоминалось. Уже приходится действовать по факту случившегося.
Ответить