Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Контоль диапазонов при компиляции [D6, WinXP]


leonidus ©   (2005-03-06 12:37:00) 

Подскажите пожалуйста где в IDE включается контроль диапазонов, т.е. что бы на этапе компиляции компилятор сам находит ошибки типа:

var
a:array[1..10] of string;
begin
i:=1 to 1000 do
a[i]:='';


leonidus   (2005-03-06 18:15:00) [1]

хорошо, понял, всем большое спасибо.


Anatoly Podgoretsky   (2005-03-06 14:06:00) [2]

А добавив в ътому еще и значимые имена избежим еще и много ошибок. Ну что такое [1..10] ведь это что то значит, значит создать значимый тип. Например для месяцев

type
  TMonthRange = 1..12;

var
  i: TMonthRange;
  a: array[TMonthRange] of string;
begin
  for i := Low(a) to High(a) do
   a[i] := '0';
end;


А если вспомнить еще что есть перечисленные типы, то будет совсем хорошо. Возможно это 1..10 надо было перечислить.


Anatoly Podgoretsky   (2005-03-06 14:02:00) [3]

Поскольку нет явного (литерального) выхода за границы, то компилятору нечего тут делать - это работа для рантайм. И не надо на это расчитывать, надо писать правильно, пример такого грамотного написания в сообщении [6]
А пример грамотноного описания массива в [4]


MU   (2005-03-06 13:33:00) [4]

или [4] (тогда компилятор отловит)

или использовать такой код
 for i := Low(a) to High(a) do
    a[i] := '0';


leonidus   (2005-03-06 13:27:00) [5]

Че-то не прокатывает, конструкция

var
a:array[1..10] of string;
i:integer;
begin
for i:=1 to 100 do
 a[i]:='';

совершенно нормально компилируется...


Юрий Зотов   (2005-03-06 12:51:00) [6]

Сорри, невнимательно прочитал вопрос. Отлов подобных ошибок на этапе компиляции можно сделать так:

type
 TRange = 1..10;

var
 i: TRange;
 a: array[TRange] of string;


leonidus   (2005-03-06 12:48:00) [7]

спасибо большое


Юрий Зотов   (2005-03-06 12:46:00) [8]

Project | Options, вкладка Compiler, птичка Range checking.


MU   (2005-03-06 12:45:00) [9]

На этапе выполнения Project Options->Compiler->Range Checking
На этапе компиляции - в голове, я думаю


Наверх

Титульная страница Поиск, карта сайта Написать письмо