Турбо отладчик (Turbo Debugger) 3.0

будет уменьшено до значения 65535


       будет уменьшено до значения 65535 (так как переменная  размером в
       слово принимает значения в диапазоне от 0 до 65535), что также >=
       0.  В этих случаях следует использовать переменные не  типа  word
       или byte, а типа integer или longint.
                    Игнорирование границ и особые случаи
       -----------------------------------------------------------------
            Заметим, что в обеих версиях функции  FindMax  в  предыдущем
       разделе предполагалось, что Count >= 1. Однако в некоторых случа-
       ях значение Count может быть равно 0 (то есть список  пуст). Если
       вы  в такой ситуации вызовите функцию FindMax,  она возвратит то,
       что оказалось в List[1]. Аналогично, если Count > NLMax, выполне-
       ние  либо завершиться с ошибкой (если разрешена проверка границ),
       либо поиск максимального значения будет выполняться в ячейках па-


       мяти, не относящихся к List.
            Здесь можно предложить два решения. Одно из них состоит, ко-
       нечно,  в том,  чтобы никогда не вызывать функцию  FindMax,  если
       Count не находится в диапазоне 1..NLMax. Это не пустое замечание.
       В серьезном программном обеспечении всегда определяются  требова-
       ния, которые нужно выполнять при вызове определенной программы, а
       затем обеспечивается удовлетворение этих требований при вызове.

       TDeb 3.0 #2-3               = 137 =
            Другое решение состоит в проверке значения Count и, если оно
       не находится в диапазоне 1..NLMax,  возврате некоторого предопре-
       деленного значения.  Например,  вы можете переписать тело функции
       FindMax следующим образом:
            begin
               if (Count < 1) or (Count > NLMax) then
                       Max := -32768
               else
               begin
                  Max := List[1];
                  for I := 2 to Count do
                  if List[I] > Max then
                     Max := List[I];

Содержание раздела