помогите Запихнуть два Long-а в один в Visual Basic 6
Добавлено: Пн фев 17, 2014 01:31:34
Нужно для управления громкостью звука (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 не предлагать- не прокатывает.
Вроде бы элементарно:
Dim Z, L, R as Long
Z = R*&H10000 or L
Но при R>=32768 старший разряд Long-а Z становится равным 1, а Long - знаковое, и Бейсик вылетает по ошибке owerflow.
Какой тип ещё можно выбрать для Z ? Или как в VB отключить проверку на знак?
Перелопатил сеть, но так и не нашёл, как обойти эту подлость, хотя вопросу 100 лет в обед. Прошу помощи сообщества.
Желательно в виде кода... Currency не предлагать- не прокатывает.
