Способ приведения указателя к определенному типу

Раздел посвящен программированию с использованием Power Basic.
ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Способ приведения указателя к определенному типу

Сообщение ger_kar » 28.01.2012 (Сб) 19:20

Вобщем стало интересно узнать все возможные способы работы с указателем, а точнее, как можно привести указатель на стуктуру к типу этой структуры. Вот например:
Function DeviceNotifyProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
wParam содержит событие, а в lParam передается указатель на соответствующую этому событию структуру. Ф-ция универсальная, соответсвенно объявить ByVal lParam As Long как ByRef lParam As [Нужный_тип] и потом работать с этой структурой не прокатывает.
Остаются два варианта. Точнее сказать я знаю эти два варианта, но они мне не очень нравятся.
Вариант 1:
Использовать переданный указатель как базу и обрабатывать структуру высчитывая соответствующие смещения.

Вариант 2:
Объявить переменную соответствующего типа и потом просто скопировать нужные данные в эту переменную и уже дальше удобно с ней работать, типо того CopyMemory VarPtr(DeviceBroadCastHeader), ByVal (lParam), SizeOf(DeviceBroadCastHeader) . Гораздо удобнее чем способ 1, но тоже на мой взгляд как-то корявенько и не эстетично.

Как мне кажется существуют и другие способы о существовании которых я не знаю, но думаю, что они есть.
А теперь собственно и сам вопрос.
Как можно удобно и эстетично приводить указатель к нужному типу и далее удобно работать с нужной структурой?
Бороться и искать, найти и перепрятать

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Способ приведения указателя к определенному типу

Сообщение jangle » 28.01.2012 (Сб) 20:25

еще вариант TYPE SET

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Способ приведения указателя к определенному типу

Сообщение ger_kar » 28.01.2012 (Сб) 22:22

Прочитал, фишка интересная, но в моем случае я так и не понял, как ее можно применить.
Пробовал и так
Type Set DeviceBroadCastHeader = lParam
и так
Type Set DeviceBroadCastHeader = @lParam
И объявление ф-ции менял ByVal lParam As Long на ByVal lParam As Long Ptr, и пшик...
Ошибочка однако "Error 421 in D:\PB_PROJECT\USB_DEVICE_NOTIFY\DEVICENOTIFY.INC(272:044): String operand expected"
Вобщем я видимо, что то не так понял или к моему случаю это не применимо?
Бороться и искать, найти и перепрятать

Dark Machine
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 26.05.2004 (Ср) 13:12

Re: Способ приведения указателя к определенному типу

Сообщение Dark Machine » 01.02.2012 (Ср) 13:53

Вот тут есть то что тебе нужно. По крайней мере, то как это используется
http://www.powerbasic.com/support/pbfor ... hp?t=39661


Вернуться в Power Basic

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 40

    TopList