AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.03.2006, 17:44   #1  
Hal is offline
Hal
Участник
Axapta Retail User
 
9 / 10 (1) +
Регистрация: 05.11.2004
Адрес: Москва
Не могу понять почему
Добрый день! вопрос такой.
есть некая dll-ка которую

static void Job1(Args _args)
{
boolean ret ;

DLL MyDll = new DLL('XXX.DLL');
DLLFunction fOpenComm = new DLLFunction(InetDll, 'OpenComm');
;
fOpenComm.returns(ExtTypes::Byte);
fOpenComm.arg(ExtTypes::dWord, ExtTypes::dWord, ExtTypes::Byte);
ret = fOpenComm.call(3,1,0);

}

.....................описание функции DLL.....+++...................

// Функция:Открыть СОМ порт
// Параметры:
// int nCommPort - целое, номер СОМ-порта, 1..16
// int nCommSpeed - целое, скорость СОМ - порта, 1..5 (1 - 115200, 2 - 57600, 3 - 38400, 4 - 19200, 5 - 9600)
// BOOL bIsIrDA
// Возвращаемое значание:
// TRUE - если СОМ порт успешно открыт
// FALSE - иначе.
__declspec(dllimport) BOOL __cdecl OpenComm(int nCommPort, int nCommSpeed, BOOL bIsIrDA);
.....................описание функции DLL...---.....................


при выполнении выкидывает ошибку

Значение регистра ESP не было сохранено при вызове функции "OpenComm" в библиотеке DLL "d:\winnt\system32\XXX.dll". Причиной может являться вызов функции DLL, которая объявлена с неверным числом аргументов.

есть пример на дельфях --- всё работает!

function TCipherIO.OpenComm(CommPort: Integer; IsCradle: Boolean) : Boolean;
begin
FCommPort := CommPort;
FIsCradle := IsCradle; boolean
FCommSpeed := CommSpeed;
Result := _OpenComm(FCommPort, FCommSpeed, FIsCradle);
{$IFNDEF USECHECK}
FActive := Result;
{$ENDIF USECHECK}
end;


Почему ? Заранее благодарен
Старый 28.03.2006, 18:00   #2  
lagr221374
Гость
 
n/a
Размещение параметров в стеке не верно посмотри WinAPI, stdcall и т.п.
Старый 28.03.2006, 18:02   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Кроме того, BOOL определяется как typedef int BOOL, т.е. надо использовать ExtTypes::dWord
__________________
Axapta v.3.0 sp5 kr2
Старый 28.03.2006, 18:08   #4  
Hal is offline
Hal
Участник
Axapta Retail User
 
9 / 10 (1) +
Регистрация: 05.11.2004
Адрес: Москва
Большое спасибо AndyВ прокатило...
Старый 28.03.2006, 18:08   #5  
Hal is offline
Hal
Участник
Axapta Retail User
 
9 / 10 (1) +
Регистрация: 05.11.2004
Адрес: Москва
Точнее AndyD
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Не могу понять в чем ошибка??? Sada DAX: Программирование 8 11.04.2006 09:43
Не могу понять назначение поля InventTrans.OpenValue Хочулия DAX: Программирование 14 24.11.2005 17:11
не могу понять как создать рассылку в CRM axapta 3.0 alpin DAX: Функционал 1 25.12.2003 11:14
Почему не могу добаить компанию в виртуальную? Sanya DAX: Администрирование 1 24.04.2003 17:34
ListView control - не могу понять как сделать что бы могли события обрабатываться ddadream DAX: Программирование 0 01.04.2002 19:30
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:54.