Вниз
Скачать: CL | DM;

Контоль диапазонов при компиляции   Найти похожие ветки 

 
leonidus   (2005-03-06 12:37) [0]

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

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


 
MU ©   (2005-03-06 12:45) [1]

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


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

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


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

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


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

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

type
 TRange = 1..10;

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


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

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

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

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


 
MU ©   (2005-03-06 13:33) [6]

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

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


 
Anatoly Podgoretsky ©   (2005-03-06 14:02) [7]

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


 
Anatoly Podgoretsky ©   (2005-03-06 14:06) [8]

А добавив в ътому еще и значимые имена избежим еще и много ошибок. Ну что такое [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 надо было перечислить.


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

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.025 c
3-1108539446
mefodiy
2005-02-16 10:37
2005.03.20
Проблемы со шрифтами при распаковке *.DB файла WinZip-ом


14-1109689996
Филя
2005-03-01 18:13
2005.03.20
Что за язык ?


4-1107523976
Evgeniy2000
2005-02-04 16:32
2005.03.20
USB Flash-drive


9-1103645931
Creep
2004-12-21 19:18
2005.03.20
OpenGL и mega1.1


14-1109141254
Mystic
2005-02-23 09:47
2005.03.20
Тест на IQ




   Наверх