Страница 1 из 1

помогите Запихнуть два Long-а в один в Visual Basic 6

Добавлено: Пн фев 17, 2014 01:31:34
Ariadna-on-Line
Нужно для управления громкостью звука (Z) на низком уровне. Задаётся двумя 16-битными переменными (L и R), объединёнными в 32-битное число. Типа word в VB6 нет. Integer - 16-битное, но signed. Приходится выбирать 32-битный тип Long. Почему? - из-за старшего разряда. 16-битные до старшего разряда Long-а не доростут. Но хрен редьки не слаще- Long тоже signed. ULong-а в VB6 тооооже нет.
Вроде бы элементарно:

Dim Z, L, R as Long

Z = R*&H10000 or L

Но при R>=32768 старший разряд Long-а Z становится равным 1, а Long - знаковое, и Бейсик вылетает по ошибке owerflow.
Какой тип ещё можно выбрать для Z ? Или как в VB отключить проверку на знак?
Перелопатил сеть, но так и не нашёл, как обойти эту подлость, хотя вопросу 100 лет в обед. Прошу помощи сообщества.
Желательно в виде кода... Currency не предлагать- не прокатывает.

Re: помогите Запихнуть два Long-а в один в Visual Basic 6

Добавлено: Пн фев 17, 2014 06:59:03
Lexter
Ariadna-on-Line писал(а):... Типа word в VB6 нет. ...
Посмотрите тут http://msdn.microsoft.com/ru-ru/library/47zceaw7.aspx на тип UInteger. Подойдёт? :)

Re: помогите Запихнуть два Long-а в один в Visual Basic 6

Добавлено: Пн фев 17, 2014 11:40:45
uk8amk
Попробуйте сделать так.
Изображение
Но это работает только после компиляции в EXE всего проекта. Как отключить в самой среде на этапе интерпретации и отладки - не знаю.

Re: помогите Запихнуть два Long-а в один в Visual Basic 6

Добавлено: Пн фев 17, 2014 17:52:38
Ariadna-on-Line
uk8amk-у.
Великолепно! Большое спа-си-бо.

Lexter-у.
Так нет же их в Визуал Бейсике 6-м.

Ну всё тему можно закрыть.