Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: DWORD-??? Добавлено: 10.11.03 10:32  

Автор вопроса:  EROS

Парни! Вот такая беда...

Сделал субклассировщик, в принципе все отлично работает... Беда лишь в том,что я не знаю как работать с параметром типа  DWORD(Long) Насколько я понял в нем содержаться 2 значения типа Integer (LoWord-HiWord).

Внимание вопрос!

- Как эти 2 значения оттуда выдернуть?

-Как подменить любое из них?

И наконец, как их туда запихать?

Выдернуть можно через соответствующие API. Но хотелось бы обойтись без них. Может кто чего подскажет? В идеале,желательно с примером.. Заранее спасибо!

Ответить

  Ответы Всего ответов: 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-сайт: mudator.by.ru
 Профиль | | #2
Добавлено: 10.11.03 23:13

ну ты не совсем прав

чтоб получить ло ворд то правильно надо использовать логическую операцию И

LoInt=DWORD And &HFFFF

а вот чтоб получить старшое слово надо сделать следующие

сдвинуть биты вправо на 4 ... то бишь сделать .. поразрядный здвиг вправо

делается оно (в ВБ нету спец функции) целочисленным делением на 2 в степени 4....

hiInt=DWORD \ 2^4

а вообщето есть апи функции loword и hiword

я сделал специально для расширей функциональности ВБ.... длл 100%ASM

там я сделал 3 функции котрорые мне очень не достаёт в ВБ....

vbShr;vbShl;vbSar кому нужна эта ДЛЛ ..... пишите на имаил .... roman3k@mail.ru

Ответить

Номер ответа: 3
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #3
Добавлено: 10.11.03 23:15

пропустил твой вопрос про АПИ... +)... а почему без них ??? чисто на ВБ програмить ?.. странно ... наоборот надо делать его как моджно более функциональным ..... а без АПи или своих библиотек на других языыках это почти нереально ....

Ответить

Номер ответа: 4
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #4 Добавлено: 11.11.03 17:25

Очень не хочется тянуть за собой ДЛЛ.(TLBINF32-именно здесь и находятся loword и hiword )

Парни, если не трудно, набросайте пример... И по-возможности разжуйте в комментариях... Заранее спасибо.

Ответить

Номер ответа: 5
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #5
Добавлено: 12.11.03 20:31

мда.. это стандартная Длл которая есть в виндовс..... и тянуть её не надо .. это раз а отказ... от .... АПи ... это большой минус .. прежде всего для тебя..... почему ты против их ?

как получить я помоему написал .... ну если ты хочешь что то подменить то просто ....

создаёшь переменную..... 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 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам