StrictOn disallows implicit conversions from 'Bool' to 'Int

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

student-uni
Бывалый
Бывалый
 
Сообщения: 242
Зарегистрирован: 01.10.2005 (Сб) 18:54

StrictOn disallows implicit conversions from 'Bool' to 'Int

Сообщение student-uni » 24.09.2006 (Вс) 21:59

Получаю сообщение

Option Strict On disallows implicit conversions from 'Boolean' to 'Integer'

Вот здесь

Dim i As Integer, j As Integer

For j = i To Raw.Length - 1 And j < i + 16

точнее здесь j < i + 16

Помогите прочитать и устранить :
От j = i до тех пор пока не будет Raw.Length - 1 И ... вопрос :

(j < i) + 16 = Истина или (j < i + 16) = Истина

И что есть Истина ? Запутался

Спасибо

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 25.09.2006 (Пн) 1:06

Код: Выделить всё
For j = i To Raw.Lenght - 1 And CInt(j < i + 16)
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

student-uni
Бывалый
Бывалый
 
Сообщения: 242
Зарегистрирован: 01.10.2005 (Сб) 18:54

Сообщение student-uni » 25.09.2006 (Пн) 9:02

Спасибо

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.09.2006 (Пн) 9:17

Nord777 писал(а):
Код: Выделить всё
For j = i To Raw.Lenght - 1 And CInt(j < i + 16)

Бредовый код. Справа не условие, а предел цикла.
Изображение

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 25.09.2006 (Пн) 9:44

Если смысл в том, что j не может быть больше чем Raw.Length - 1 и одновременно не может быть больше i + 16, то имеет смысл написать

Код: Выделить всё
For j = i To Min(Raw.Length - 1, i + 15)
Весь мир матрица, а мы в нем потоки байтов!

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 25.09.2006 (Пн) 11:07

Бредовый код. Справа не условие, а предел цикла

Если это в мой адрес, то ты не прав, ибо:
Получаю сообщение
Option Strict On disallows implicit conversions from 'Boolean' to 'Integer'
....
Помогите прочитать и устранить

был дан четкий ответ на поставленный вопрос.
Этот код имеет право на существование и он рабочий:
Код: Выделить всё
Dim i As Integer = 1
Dim j As Integer = 16 '17
Dim RawLength = 5

For j = i To RawLength - 1 And CInt(j < i + 16)
    Debug.WriteLine("j = " & j)
Next

Если перед входом в цикл j<=16, то цикл выполнится 4 раза
Код: Выделить всё
16 < 1 + 16 = True 
Cint(True) = -1
(5-1) and -1 = 4
Если перед входом в цикл J>16, то цикл не выполнится ни разу.
Код: Выделить всё
17 < 1 + 16 = False
Cint(False) = 0
(5-1) and 0 = 0
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: StrictOn disallows implicit conversions from 'Bool' to '

Сообщение tyomitch » 25.09.2006 (Пн) 11:29

student-uni писал(а):Помогите прочитать и устранить :
От j = i до тех пор пока не будет Raw.Length - 1 И ...
Изображение

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 25.09.2006 (Пн) 11:59

Код: Выделить всё
Помогите прочитать и устранить :
От j = i до тех пор пока не будет Raw.Length - 1 И ... вопрос :

(j < i) + 16 = Истина или (j < i + 16) = Истина

И что есть Истина ? Запутался

Я так понял что автор пытается разобраться в чужом коде и сам не знает что должен делать этот код, а посему не следует считать этот вопрос постановкой задачи.

to student-uni
Расскажи народу, что же ты все-таки делаешь и чего ждешь от этого кода?
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 25.09.2006 (Пн) 14:45

2Nord777
Код
Код: Выделить всё
For j = i To RawLength - 1 And CInt(j < i + 16)
не бредовый, он вполне рабочий, но он мягко говоря странно выглядит, ибо выполнятся он будет весьма странным образом, как собственно и показано в твоем примере.

Преобразования из булева значения в целое с дальнейшим поразрядным сложением... вряд ли это то что нужно автору.
Весь мир матрица, а мы в нем потоки байтов!

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 25.09.2006 (Пн) 14:56

но он мягко говоря странно выглядит, ибо выполнятся он будет весьма странным образом


Согласен на 100%
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 36

    TopList