Глюк в конструкции IF ?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Forex Trader
114496
Forex Trader  
Глюк в конструкции IF ?

Может чего я не понимаю, но в конструкции

IF ... Then
Begin
...
End;
Else
Begin
...
End;

тело следующее за else будет обрабатываться всегда (не зависимо от переключателя if ) ?

PS: If .. then .. else Begin .. end; работает OK.
Forex Trader
114496
Forex Trader  
Да, может перейдете на С-шные скобки ????

А то эта паскалевская байда уже ...
MetaQuotes Software Corp.
Модератор
209683
MetaQuotes Software Corp.  
не совсем понятен вопрос.
как Вы получили этот глюк? можно текст эксперта посмотреть?
указанная конструкция не пройдёт компиляцию из-за точки с запятой перед else. компилятор скажет, что ошибка номер 23 alone else without if-then statement
MetaQuotes Software Corp.
Модератор
209683
MetaQuotes Software Corp.  
пожалуйста
вот цитата со страницы https://www.metaquotes.net/en/metatrader5/algorithmic-trading как раз из пункта 4.2.3 Инструкция условия IF-THEN
===
Операторные скобки Begin - End могут быть заменены фигурными скобками { }.
===
Forex Trader
114496
Forex Trader  
Ошибка компилляции ..
Текст компилляцию проходил, хотя ";" действительно не было.

Код пожалуйста (еще раз перепроверил):

if abs(S_abs) < Max(S_abs_1,S_abs_2)*4 OR S_abs_1=0 then Begin
SetIndexValue2(shift, S_abs);
countS=1+countS;
ENd;
else Begin
SetIndexValue(shift, 0.5*abs(S_abs)/S_abs);
countS=1;
end;
cntB=cntB+1
MetaQuotes Software Corp.
Модератор
209683
MetaQuotes Software Corp.  
а вот точка с запятой между End и Else вызовет ошибку компиляции
Forex Trader
114496
Forex Trader  
Анекдот
Есть такой анекдот:

Новому русскому на разбивают сзади машину. Тот выскакивает из машины, подлетает к виновнику и орёт:

- Ты-ы хто-о-о ?!
- П-п-писатель ...
-Какой нахер писатель ?!
-П-про-з-заик ...
-Про каких таких, в пи..ду, заек ????!!!!

Вот так и у вас, я спрашиваю про проблему с компайлером, а вы советуете вызвать ошибку. <>Еще раз привожу сомнительный код. присутствие , либо отсутствие т.з. - ошибку не вызывает:



/*[[
Name := ГЛЮК
Author := Прохожий
Link := http://localhost/
]]*/

Variable : S_abs(0),countS(0),cntbars(0),shift(0);

For shift = 2 DownTo 0

Begin
if abs(S_abs) < 0 then Begin
countS=1+countS;
end;
else Begin
countS=1;
end;
cntBars=cntBars+1;
End;



PS: Забыл добавить что код для простоты понимания лишен многоих строк и является бессысленным.

MetaQuotes Software Corp.
Модератор
209683
MetaQuotes Software Corp.  
так мы об этом и просили!
потому что отдельно взятый кусок кода, но используемый в другом контексте, генерирует ошибку.
будем разбираться.
MetaQuotes Software Corp.
Модератор
209683
MetaQuotes Software Corp.  
исправили
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий