Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Глючит комп или я..? Добавлено: 05.04.04 20:50  

Автор вопроса:  ISpy | Web-сайт: intermult.boom.ru

Почему-то не правильно работает этот код (код упрощён):

x = 0

y = 0

For i = 1 To 1

v = "00010010"

For j = 0 To 7

v2 = Mid(v, j + 1, 1)

Select Case v2

Case "1"

pic1.PSet (j, y), RGB(0, 0, 0)

Case "0"

pic1.PSet (j, y), RGB(255, 255, 255)

End Select

Next j

Next i

он рисует мне только шесть пикселей, хотя должен восемь!

Я вставлял msgbox между строк чтобы понять какие он

пиксели пропускает:

x = 0

y = 0

For i = 1 To 1

v = "00010010"

For j = 0 To 7

v2 = Mid(v, j + 1, 1)

Select Case v2

Case "1"

pic1.PSet (j, y), RGB(0, 0, 0)

msgbox j, 24, y 'Вот msgbox

Case "0"

pic1.PSet (j, y), RGB(255, 255, 255)

msgbox j, 24, y 'Вот msgbox

End Select

Next j

Next i

но msgbox показывала что функция PSet устанавливает все 8 пикселей!

Помогите, я уже задолбался!

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Vilya



ICQ: 232995216 

Вопросов: 12
Ответов: 63
 Web-сайт: нету
 Профиль | | #1
Добавлено: 05.04.04 21:22

А зачем ты пишеш For i=1 to 1? VB такое вообще пропускает, если первое число равно второму. Убери этот цикл или напиши For i=1 to 2.

Ответить

Номер ответа: 2
Автор ответа:
 2San



Вопросов: 11
Ответов: 68
 Профиль | | #2 Добавлено: 05.04.04 21:33
У меня этот код рисует все восемь пикселей.
Может ты его слишком сильно упростил?

Ответить

Номер ответа: 3
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #3 Добавлено: 05.04.04 21:36
Нормально рисует, все восемь точек - шесть белых и две черные. А у тебя случайно пикчербокс не черного цвета???. Сделай его красным, например

Ответить

Номер ответа: 4
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #4 Добавлено: 06.04.04 09:32

Вообще на такой случай у VB есть режим отладки

Ответить

Номер ответа: 5
Автор ответа:
 ISpy



Разработчик Offline Client

Вопросов: 47
Ответов: 621
 Web-сайт: intermult.boom.ru
 Профиль | | #5
Добавлено: 06.04.04 15:50

Создал новый проект, вставил код.. М да.. И правда рисует все восемь точек.. Но почему-то в моем старом проекте не хочет пахать ни в какую! Видимо либо глючит не он, либо какой-то другой код делает этот глючным. Выкладываю листинг, если не лень и есть возможность помочь, то просмотрите пожалуйста..

Private Sub Command1_Click()

'Закрашиваем PictureBox нейтральным цветом

For i = 0 To pic1.ScaleWidth

For j = 0 To pic1.ScaleHeight

pic1.PSet (i, j), RGB(250, 250, 250)

Next j

Next i

'Очищаем переменные

i = 0

j = 0

'Здесь я кодирую символы из поля Text2

'в набор ноликов и едениц

'и помещаю его в поле Text1

For i = 1 To Len(Text2.Text)

v = Mid(Text2.Text, 1, 1)

If Len(Text2.Text) = 1 Then

Text2.Text = ""

Else

Text2.Text = Mid(Text2.Text, 2, Len(Text2.Text) - 1)

End If

Select Case v

Case "0"

Text1.Text = Text1.Text + "00100010"

Case "1"

Text1.Text = Text1.Text + "00100011"

Case "2"

Text1.Text = Text1.Text + "00100100"

Case "3"

Text1.Text = Text1.Text + "00100101"

Case "4"

Text1.Text = Text1.Text + "00100110"

Case "5"

Text1.Text = Text1.Text + "00100111"

Case "6"

Text1.Text = Text1.Text + "00101000"

Case "7"

Text1.Text = Text1.Text + "00101001"

Case "8"

Text1.Text = Text1.Text + "00101010"

Case "9"

Text1.Text = Text1.Text + "00101011"

Case "+"

Text1.Text = Text1.Text + "00101100"

Case "-"

Text1.Text = Text1.Text + "00101101"

Case "*"

Text1.Text = Text1.Text + "00101110"

Case "/"

Text1.Text = Text1.Text + "00101111"

Case "="

Text1.Text = Text1.Text + "00110000"

Case "."

Text1.Text = Text1.Text + "00110001"

Case ","

Text1.Text = Text1.Text + "00110010"

Case " "

Text1.Text = Text1.Text + "00110011"

End Select

Next i

'Очищаем переменные

i = 0

v = ""

x = 0

y = 0

'Этот код ставит каждому нулю из поля Text1

'пиксель белого цвета в PictureBox

'а каждой еденице пикслель черного цвета

'

For i = 1 To (Len(Text1.Text) / 8)

v = Mid(Text1.Text, (i - 1) * 8 + 1, 8)

For j = 0 To 7

v2 = Mid(v, j + 1, 1)

Select Case v2

Case "1"

pic1.PSet (x, y), RGB(0, 0, 0)

Case "0"

pic1.PSet (x, y), RGB(255, 255, 255)

End Select

x = x + 1

Next j

'Эта вставочка нужна для того,

'чтобы в PictureBox ставилось не более

'256 пикселей в каждой строке

t = t + 1

If (t = 32) And (i <> Len(Text1.Text) / 8) Then

t = 0

x = 0

y = y + 1

End If

Next i

'Ставим в конце точку красного цвета

'означающую конец кода

pic1.PSet (x, y), RGB(255, 0, 0)

i = 0

j = 0

v = ""

v2 = ""

Text1.Text = ""

Text2.Text = ""

End Sub

Ответить

Номер ответа: 6
Автор ответа:
 Vilya



ICQ: 232995216 

Вопросов: 12
Ответов: 63
 Web-сайт: нету
 Профиль | | #6
Добавлено: 06.04.04 16:57

Я вставил, у меня всё работает. Посмотри свойство AutoRedraw у pic1, должно быть true. Или может тебе плохо видно как они рисуются? Сделай ScaleHeight=10 и ScaleWidth=10 и DrawWidth=5, будет хорошо видно.

Ответить

Номер ответа: 7
Автор ответа:
 ISpy



Разработчик Offline Client

Вопросов: 47
Ответов: 621
 Web-сайт: intermult.boom.ru
 Профиль | | #7
Добавлено: 06.04.04 17:20

Блииииииииииин!!!!!

Я идиот! (это конечно не правда :) ), код правильный! Это я забыл поставить у pic1 свойство ScaleMod = Pixel !!! Извините кто потратил свое время из-за моей невнимательности, но я просто никак не мог допереть что не правильно в коде вот и спросил на форуме, а оказалось надо проверять сначала самые простые версии неисправностей. Надеюсь кому-то мой горький опыт пойдет на пользу :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам