Здравствуйте.
Занялся переводом 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 у меня нет, так что надеюсь на подсказку сообщества.
Передача параметров
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 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.
И все будет хорошо ...
Потом понял, что используемые в описании параметров процедур типы данных должны быть описаны ДО описания 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.
И все будет хорошо ...

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