Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблемы с If'ом

4.8K
17 октября 2003 года
Inna
6 / / 07.10.2003
Подскажите, пожалуйста, в чем может быть причина ошибки при сообщении "End if without block if", если все if-ы и endif-ы на месте, других "двойных" операторов в программе нет? Почему vb не видит его? Правда, у меня внутри if-a довольно большой кусок, но все if, else, endif там, где надо, как положено.
Заранее пасиба.
2.2K
17 октября 2003 года
USA-Lesh
50 / / 02.04.2003
Такое иногда бывает. Помогает замена модуля на новый с тем же текстом. Либо ошибка в другом месте кода, может даже не в этой процедуре. Или безусловный переход за пределы блока IF. С другими не сталкивался.
459
17 октября 2003 года
gacol
273 / / 12.02.2003
Цитата:
Originally posted by Inna
Подскажите, пожалуйста, в чем может быть причина ошибки при сообщении "End if without block if", если все if-ы и endif-ы на месте, других "двойных" операторов в программе нет? Почему vb не видит его? Правда, у меня внутри if-a довольно большой кусок, но все if, else, endif там, где надо, как положено.
Заранее пасиба.



Пошли свой пример. Если кусок слишком большой вставь файлом.

267
17 октября 2003 года
Cutty Sark
1.2K / / 17.10.2002
По поводу неправильной компиляции - ни разу не встречал. Скорее всего у тебя ошибка в программе.

Относись к таким операторам, как к обычным скобкам, тогда будет проще понять в чем дело.
Вот типичные примеры, когда может встретиться ошибка "End if without block if":

1.
 
Код:
...
If x>0 Then
   ...
   While y=0
     ...
     ...
End if
...
...
Wend

В этом случае вроде бы все операторы спарены - НО! - Компилятор открывает скобку If, потом открывает скобку While (то есть мы внутри открытой скобки While), потом видит закрывающую скобку If. Возникает ошибка, потому что чтобы закрыть If, надо сначала закрыть While. Если перевести на арифметический язык - у тебя написано выражение (...[...)...] Сама понимаешь, что в нем ошибка.

2.
 
Код:
If x>0 Then s=s+x
  ...
  ...
End if

И здесь вроде бы все правильно. И опять НО. "s=s+x" написано в той же строке, что Then. Поэтому компилятор считает, что это был If из одной строки. Поэтому End If оказывается ошибочным. Правильно будет так:
 
Код:
If x>0 Then
  s=s+x
  ...
  ...
End if



Вот. Есть, конечно, и другие варианты. Пиши.
4.8K
20 октября 2003 года
Inna
6 / / 07.10.2003
Спасибо всем! Оказывается, дело было в том, что я первое действие писала в одной строке с then. Почему-то раньше я на это внимание не обращала и проблем не возникало, я даже и не думала, что это так важно. В остальном-то все правильно, я чуть мозги не сломала. Еще раз спасибо, всем, кто ответил. Вы прямо спасли меня от долгой и мучительной смерти от испарения мозгов! 8)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог