![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Контоль диапазонов при компиляции [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
На этапе компиляции - в голове, я думаю