|
Вопрос # 1 991/ вопрос открыт / |
|
Здравствуйте уважаемые эксперты!
Помогите, пожалуйста.
Перевожу файлы из С в Delphi
UcanReadCanMsgEx (tUcanHandle UcanHandle_p,
BYTE* pbchannel_p
tCanMsgStruct* pCanMsg_p,
DWORD* pdwCount_p);
таким образом
function UcanReadCanMsgEx (UcanHandle_p :tUcanHandle; var pbChannel_p : byte; var pCanMsg_p :tCanMsgStruct) :byte; STDCALL;
Далее обращаюсь:
...
bChannel : byte;
pbChannel_p : ^byte;
...
bChannel := USBCAN_CHANNEL_ANY;
pbChannel_p := @bChannel;
...
Rez := UcanReadCanMsgEx(TempHandle, pbChannel_p, pUsbcanEntry.m_CanMsg);
Компилятор выдает ошибку:
Types of actual and formal var parameters must be identical, указывая на pbChannel_p
Помогите, в чем моя ошибка????
 |
Вопрос задала: Гурьянова С.В. (статус: Посетитель)
Вопрос отправлен: 13 октября 2008, 11:56
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Feniks
Здравствуйте, Гурьянова С.В.!
Если мне память не изменяет, то там не нужно лепить указатель. Попробуйте без него:
bChannel := USBCAN_CHANNEL_ANY;
...
Rez := UcanReadCanMsgEx(TempHandle, pbChannel, pUsbcanEntry.m_CanMsg);
Или приводите более детальный код.
P.S. Желаю удачи.
 |
Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 13 октября 2008, 12:06
|
Ответ #2. Отвечает эксперт: Помфюк Владимир Степанович
Здравствуйте, Гурьянова С.В.!
Если параметр функции объявлен как var, то передавать в этой позиции в функцию можно ТОЛЬКО переменную и обязательно ТОГ ЖЕ ТИПА, тоесть Вам надо переменную pbChannel_p сделать типа byte или перед вызовом функции присвоить значение временной переменной, а после обратно pbChannel_p
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|