Страница: 1 |
Парни! Вот такая беда... Сделал субклассировщик, в принципе все отлично работает... Беда лишь в том,что я не знаю как работать с параметром типа DWORD(Long) Насколько я понял в нем содержаться 2 значения типа Integer (LoWord-HiWord). Внимание вопрос! - Как эти 2 значения оттуда выдернуть? -Как подменить любое из них? И наконец, как их туда запихать? Выдернуть можно через соответствующие API. Но хотелось бы обойтись без них. Может кто чего подскажет? В идеале,желательно с примером.. Заранее спасибо!
ну ты не совсем прав чтоб получить ло ворд то правильно надо использовать логическую операцию И LoInt=DWORD And &HFFFF а вот чтоб получить старшое слово надо сделать следующие сдвинуть биты вправо на 4 ... то бишь сделать .. поразрядный здвиг вправо делается оно (в ВБ нету спец функции) целочисленным делением на 2 в степени 4.... hiInt=DWORD \ 2^4 а вообщето есть апи функции loword и hiword я сделал специально для расширей функциональности ВБ.... длл 100%ASM там я сделал 3 функции котрорые мне очень не достаёт в ВБ.... vbShr;vbShl;vbSar кому нужна эта ДЛЛ ..... пишите на имаил .... roman3k@mail.ru пропустил твой вопрос про АПИ... +)... а почему без них ??? чисто на ВБ програмить ?.. странно ... наоборот надо делать его как моджно более функциональным ..... а без АПи или своих библиотек на других языыках это почти нереально .... Очень не хочется тянуть за собой ДЛЛ.(TLBINF32-именно здесь и находятся loword и hiword ) Парни, если не трудно, набросайте пример... И по-возможности разжуйте в комментариях... Заранее спасибо. мда.. это стандартная Длл которая есть в виндовс..... и тянуть её не надо .. это раз а отказ... от .... АПи ... это большой минус .. прежде всего для тебя..... почему ты против их ? как получить я помоему написал .... ну если ты хочешь что то подменить то просто .... создаёшь переменную..... 4 байта длинной соотсвенно (например имя Dword) так как получить значения ты знаешь ...... как обнулить какие надо биты тоже..... предположим ... тебе надо .... поместить loword и hiword всё прсото ..... насчёт loword так вобще элементарно ..... Dword=Dword or loword а hiword требует немного обработки надо здвинуть на 16 бит влево что равносильно умноджжению на 2 в степени 16 Dword=Dword or (hiword * 2^16) чтоб не было переполнения надо соотсвенно использовать тип Long для хранения hiword.... либо если хочешь ... использовать 2 байтные переменные для loword и hiword о можно так Dword=Dword or hiword Dword=Dword*(2^16) Dword=Dword or loword ты учитывый ещё что ВБ сам по себе не очень быстрый ...... так что надо использовать .... любые средства ... для получения наилучшей производительности твоей программы.... как нибудь ты с этим столкнёшься... П.С: 2^16 заменишь сотсвенно числом .. потому что .. ВБ.. возведение в степень делает ... не быстро мягко говоря... + что не совсем мне нравится что ... бедные типы данных.... =( Страница: 1 |
Вопрос: DWORD-???
Добавлено: 10.11.03 10:32
Автор вопроса:
EROS
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа: crackoff
ICQ: 156165990
Вопросов: 12
Ответов: 229
Профиль | | #1
Добавлено: 10.11.03 17:19
Ну, выдернуть, наверное, можно так:
HiInt=DWORD And FFFF0000
LoInt=DWORD And 0000FFFF
C LoInt точно прокатит, а HiInt - попробуй. Не знаю, число ведь(long)
знаковое, а беззнаковых в ВБ нет...
Подменяешь также
DWORD=LoInt
DWORD=DWORD Or HiInt
Номер ответа: 2
Автор ответа: Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #2
Добавлено: 10.11.03 23:13
Номер ответа: 3
Автор ответа: Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #3
Добавлено: 10.11.03 23:15
Номер ответа: 4
Автор ответа: EROS
Вопросов: 58
Ответов: 4255
Профиль | | #4
Добавлено: 11.11.03 17:25
Номер ответа: 5
Автор ответа: Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #5
Добавлено: 12.11.03 20:31