Проблема с оператором IF

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Boris_BGB
Флудер-Энтузиаст
Флудер-Энтузиаст
 
Сообщения: 661
Зарегистрирован: 11.12.2002 (Ср) 11:41

Проблема с оператором IF

Сообщение Boris_BGB » 25.08.2003 (Пн) 18:53

Проблема в том, что программа выполняя нижеследующий код перескакивает с первой строчки If'a на его конец (End if)

Это только кусок кода (рабочий).
Код: Выделить всё
Dim i As Integer
Dim fin_x As Integer
Dim fin_y As Integer
Dim am_x, am_y As Integer


Private Sub Command1_Click()
fin_x = Food.Left
fin_y = Food.Top
am_x = Shape1.Left
am_y = Shape1.Top

If fin_x < Shape1.Left And fin_y < Shape1.Top Then
     [color=red]For am_x = Shape1.Left To am_x = fin_x[/color]
        cmnd_leftup
     Next am_x
Else
[color=red]End If[/color]
End Sub

Private Sub cmnd_leftup()
i = 1
For i = 1 To 51
  i = i + 1
  Shape1.Left = Shape1.Left - 2
  Shape1.Top = Shape1.Top - 2
Next i
End Sub


GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.08.2003 (Вт) 5:15

:shock:
А чего ты хотел? Куда ещё она должна перескакивать, если условие не выполняется?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Boris_BGB
Флудер-Энтузиаст
Флудер-Энтузиаст
 
Сообщения: 661
Зарегистрирован: 11.12.2002 (Ср) 11:41

Сообщение Boris_BGB » 26.08.2003 (Вт) 8:39

Условие выполняется и начинает работать For ... , а затем перескакивает на End if.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.08.2003 (Вт) 8:43

Тьфу ты, ёлки зелёные. Давненько такой ошибки не видел! :)

For am_x = Shape1.Left To am_x = fin_x

Выделенная часть равняется либо true, либо false. Так что всё правильно перескакивает. Правильно так:
For am_x = Shape1.Left To fin_x
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Boris_BGB
Флудер-Энтузиаст
Флудер-Энтузиаст
 
Сообщения: 661
Зарегистрирован: 11.12.2002 (Ср) 11:41

Сообщение Boris_BGB » 26.08.2003 (Вт) 10:34

Извинияюсь за ламерство. :roll:


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Google-бот, SemrushBot, Yandex-бот и гости: 5

    TopList