Conditionally includes source code at compile-time.

#IF nExpression1 | lExpression1 
      Commands
[#ELIF nExpression2 | #ELIF lExpression2
      Commands...
#ELIF nExpressionN | #ELIF lExpressionN
      Commands] 
[#ELSE 
      Commands]
#ENDIF

Параметры

#IF nExpression1| lExpression1Commands

Аргумент nExpression1 задает числовое выражение, которое должно вычисляться.

  • Если значение этого выражения отлично от нуля, команды, следующие непосредственно за директивой #IF, будут включены в компилируемый код. Осуществляется выход из структуры #IF ... #ENDIF, и компиляция продолжается с первой программной строки, следующей за директивой #ENDIF.

  • Если значение выражения равно 0, команды, следующие непосредственно за #IF, не включаются в компилируемый код. Вычисляются выражения следующих директив #ELIF.

Аргумент lExpression1 задает логическое выражение, которое должно вычисляться.

  • Если значение этого выражения есть "истина" (.T.), команды, следующие непосредственно за директивой #IF, будут включены в компилируемый код. Осуществляется выход из структуры #IF ... #ENDIF, и компиляция продолжается с первой программной строки, следующей за директивой #ENDIF.

  • Если значение выражения ѕ "ложь" (.F.), команды, следующие непосредственно за #IF, не включаются в компилируемый код. Вычисляются выражения следующих директив #ELIF.

    NoteNote

    Не задавайте системные переменные памяти в качестве nExpression1 или lExpression1. Значения системных переменных памяти вычисляются только на этапе выполнения.

#ELIF nExpression2| #ELIF lExpression2Commands

...

#ELIF nExpressionN| #ELIF lExpressionNCommands

Если значение выражения nExpression1 авно 0 или значение lExpression1 - "ложь" (.F.), вычисляются директивы #ELIF. Сначала вычисляется первое выражение #ELIF nExpression2 или lExpression2. Если значение nExpression2 отлично от нуля или значение lExpression2 есть "истина" (.T.), команды, следующие за #ELIF, будут включены в компилируемый код. Осуществляется выход из структуры #IF ... #ENDIF, и компиляция продолжается с первой программной строки, следующей за директивой #ENDIF.

Если nExpression2 равно 0 или lExpression2 ѕ "ложь" (.F.), команды, следующие за #ELIF, не включаются в компилируемый код. Вычисляется следующая директива #ELIF.

#ELSE Commands

Если директив #ELIF нет или они есть, но все дали значения 0 или "ложь" (.F.), то наличие директивы #ELSE определяет, будут ли включены в компилируемый код другие команды:

  • Если директива #ELSE указана, следующие за ней команды включаются в компилируемый код.

  • Если директива #ELSE не указана, ни одна из команд, находящихся между #IF и #ENDIF, не включается в компилируемый код. Осуществляется выход из структуры #IF ... #ENDIF, и компиляция продолжается с первой программной строки, следующей за директивой #ENDIF.

#ENDIF

Указывает конец оператора #IF.

Expand imageПримечания

Благодаря применению структуры #IF ... #ENDIF повышается читаемость исходного кода, сокращается размер откомпилированной программы, а в некоторых случаях повышается производительность.

При компиляции структуры #IF ... #ENDIF производится вычисление содержащихся в ней последовательных логических или числовых выражений; результаты вычислений определяют, какую группу команд Visual FoxPro следует или не следует включать в компилируемый код.

Expand imageПример

В следующем примере структура #IF ... #ENDIF определяет, какая версия Visual FoxPro выполняет компиляцию, а затем выдает соответствующее сообщение.

  CopyCode imageCopy Code
#If SYS(3004) = "1033"
? "Locale ID is English"
#Elif SYS(3004) = "1034"
? "Locale ID is Spanish"
#Elif SYS(3004) = "1031"
? "Locale ID is German"
#Elif SYS(3004) = "1036"
? "Locale ID is French"
#Endif 

Expand imageСмотрите Также