Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  
Подписаться на рассылку:
Клуб программистов


Основы Delphi
$B
Деректива компилятора
Сокращаются ли вычисления при операциях or или and unit
  
1 {$B-}

2 {$B+}
Описание
Директива компилятора $B говорит Delphi, продолжить ли вычисление многоаргументного булева выражения или нет, когда результат заранее известен.

{$B-} (значение по умолчанию) означает не продолжать, {$B+} означает продолжать проверку

Например, по умолчанию, с выражением:

expr1 and expr2

expr2 не будет вычисляться, если expr1 является ложным. С {$B+}, проверка продолжилась бы.

Пример иллюстрирует нормальное использование значения по умолчанию.
Примечания
$B эквивалентна $BoolEval.

Эта директива может использоваться в пределах вашего кода множество раз.

$B- является значением по умолчанию
Похожие команды
$BoolEval  Сокращаются ли вычисления при операциях or или and

And  Булев and или поразрядный and двух аргументов

If  Начинает условное выражение, чтобы решить, что делать далее

Or  Булевская or или поразрядная or двух аргументов

 
Пример кода : Проверка содержания строки
var
  FullString, EmptyString : string;

begin
  FullString  := 'Fred';
  EmptyString := '';

  // Выключение полной проверки
  {$B-}

  // Проверка 4-го символа каждой строки
  if (Length(FullString) >= 4) and (FullString[4] = 'd')
  then ShowMessage('4-ый символ FullString - d')
  else ShowMessage('4-ый символ FullString НЕ d');

  if (Length(EmptyString) >= 4) and (EmptyString[4] = 'd')
  then ShowMessage('4-ый символ EmptyString - d')
  else ShowMessage('4-ый символ EmptyString НЕ d');

  // Включение полной проверки
  {$B+}

  // Проверка 4-го символа каждой строки
  if (Length(FullString) >= 4) and (FullString[4] = 'd')
  then ShowMessage('4-ый символ FullString - d')
  else ShowMessage('4-ый символ FullString НЕ d');

  // Теперь мы должны защитить код от ошибок
  try
    if (Length(EmptyString) >= 4) and (EmptyString[4] = 'd')
    then ShowMessage('4-ый символ EmptyString - d')
    else ShowMessage('4-ый символ EmptyString НЕ d');
  except
    on E : EAccessViolation do
    ShowMessage(E.Message);
  end;

end;

Следующее типично для вывода вышеупомянутого кода:

4-ый символ FullString - d
4-ый символ EmptyString НЕ d
4-ый символ FullString - d

Access violation at address 00442196 in module 'PROJECT1.EXE'.
Read of address FFFFFFFF
 



© Блог программистов   |  Создание и продвижение сайтов - "Веб сателлит"  |  Ссылки  |     |  Английская версия