Показать сообщение отдельно
Старый 06.03.2012, 08:05   #3
Платон Александрович
Нуждающийся
 
Аватар для Платон Александрович
 
Регистрация: 05.10.2011
Адрес: Россия, Южно-Сахалинск
Сообщений: 66
Написано 42 полезных сообщений
(для 83 пользователей)
Ответ: Передача структуры из блица

Сообщение от wolfhound512 Посмотреть сообщение
если туда передать пустой тип (Null) или ноль (0), то вылетает MAV
Это баг компилятора, т.к. * - передача указателя на данные, в результате с Null получается такое:
sub esp, $00000004
mov eax, [_GetEvent@4]


mov ebx, $00000000
mov ebx, [ebx]

mov [esp], ebx
call eax
Сообщение от wolfhound512 Посмотреть сообщение
Можно как-то решить эту проблему? Необходимо передать именно нулевой указатель.
Выделяешь экземпляр любого тайп (или создаешь банк на 4 байта) и по смещению 4 записываешь туда 0, естессно из библиотеки:
Local MyNull% = CreateBank ( 4 )

PokeI ( MyNull + 4, 0 )
где PokeI соответственно
void PokeI ( int * Address, int Value )
{
    *Address = Value;
}
.lib "..."
PokeI ( Address%, Value% )
ну или как-то по другому из своей библиотеки, смысл думаю понятен.
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо Платон Александрович за это полезное сообщение:
Harter (06.03.2012), HolyDel (06.03.2012), musetdima (18.07.2012), St_AnGer (06.03.2012), wolfhound512 (06.03.2012)