Напишите это так:
Dim Reel1Num As Long
Reel1Num = (CLng(Rnd * 20) + 1)
Не используйте Integer
в VB6 - он представляет 16-битное целое число со знаком и имеет немного меньшую производительность, чем Long
, который на самом деле является 32-битным целым числом со знаком. Таким образом, вы также не столкнетесь с ограничениями с 16-битным типом данных.
Причина, по которой ваш код не работает, заключается в том, что функция Int()
не преобразует тип данных значения в тип Integer
— она округляет указанное значение до целочисленного значения, но сохраняет его тип данных.
Чтобы преобразовать значение в определенный тип данных, используйте функции CInt()
, CLng()
и т. д. Но, как я уже сказал, избегайте использования Integer
, если это вам особенно не нужно — Long
в большинстве случаев лучше.
Изменить:
После того, как вы разместили свой код, я не вижу определения переменной Reel1Num
— где она определена? Это Reel1Spin
? Если это так, убедитесь, что вы включили опцию Require variable declaration
в Tools->Options
— по умолчанию она отключена. Если у вас его нет, это очень простой способ выстрелить себе в ногу.
Не связано с вашей ошибкой, но большинство ваших объектов изображения определены неправильно - в VB6 тип переменной должен быть указан для каждой переменной, а не один раз в строке. Итак, в этой строке:
Public ImgBeth, ImgWallow, ImgDan, ImgChris, ImgCatBug As StdPicture
вы действительно создаете только 1 объект StdPicture
, все остальные будут вариантами. Правильный способ сделать это:
Public ImgBeth As StdPicture, ImgWallow As StdPicture, ImgDan As StdPicture, _
ImgChris As StdPicture, ImgCatBug As StdPicture
Помимо этого, я не вижу ничего плохого в вашем коде - у меня на компьютере не установлен VB6. Имейте в виду, что в VB6 есть странный способ борьбы с несоответствием типов, и в некоторых случаях выделенная строка может не быть той, которая вызывает реальную ошибку. Раньше это сводило меня с ума.
person
xxbbcc
schedule
10.05.2013