Страница: 1 |
Страница: 1 |
Вопрос: как будет выглядеть в басике
Добавлено: 07.08.08 01:15
Автор вопроса: Skywalker | Web-сайт:
вот например как делфи:
case integer(pointer(integer(pcd.lpData)+4)^) of
вот как в с++:
trayCommand = *(DWORD *) (((BYTE *)cpData->lpData) + 4);
вот как пишу я:
Select Case New IntPtr(data.lpData.ToInt32 + 4).ToInt32
но, чот нето.
дело в том, что должно получится значение напирмер 0 или 1 или 2...
Но указатель data.lpData = скажем 153203956 и значение 1 получить как-то проблематично. В чом тут дело?)
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #1
Добавлено: 07.08.08 01:22
догнал, видимо так
Dim q As Integer = Marshal.PtrToStructure(New IntPtr(data.lpData.ToInt32 + 4), GetType(Integer))
правильно?
Номер ответа: 2
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #2
Добавлено: 07.08.08 08:21
ахренеть.......
Друг, ты ваще чего творишь-то????? Это что за издевательства над типами? Если бы я был представителем типа Integer, я бы покончил с собой после того, что ты с ним сделал.
Номер ответа: 3
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #3
Добавлено: 07.08.08 11:28
Пан EROS, поясните, что вас так смутило?
Номер ответа: 4
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #4
Добавлено: 07.08.08 13:06
ну вот тут его смутило
Select Case New IntPtr(data.lpData.ToInt32 + 4).ToInt32
что нада так
Select Case data.lpData.ToInt32 + 4
а если речь идет о первом сообщении хз
Номер ответа: 5
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #5
Добавлено: 07.08.08 14:17
Ну насколько я понимаю ты пытаешься получить значение второго элемента массива типа DWORD сдвинув указатель на 4 байта. Я понимаю, что ты переделываешь сишный код, но неужели нельзя было переработать как то код чтоб избавиться от работы с указателями?