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

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1497
Зарегистрирован: Вс май 13, 2012 00:01:54

Сообщение 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 не предлагать- не прокатывает.
Реклама
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Пт ноя 29, 2013 00:44:32

Сообщение Lexter »

Ariadna-on-Line писал(а):... Типа word в VB6 нет. ...
Посмотрите тут http://msdn.microsoft.com/ru-ru/library/47zceaw7.aspx на тип UInteger. Подойдёт? :)
Реклама
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Попробуйте сделать так.
Изображение
Но это работает только после компиляции в EXE всего проекта. Как отключить в самой среде на этапе интерпретации и отладки - не знаю.
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1497
Зарегистрирован: Вс май 13, 2012 00:01:54

Сообщение Ariadna-on-Line »

uk8amk-у.
Великолепно! Большое спа-си-бо.

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

Ну всё тему можно закрыть.
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «Интеграция с ПК»