Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Pascal
 
 автор: BinLaden   (12.10.2008 в 00:42)   письмо автору
 
 

Пытаюсь передать указатель на массив (да хоть просто массив) в процедуру на этом недоязыке

{ ... }
const

        N = 20;

type

        a = array[1..N] of integer;

var
        i : integer;
        arr : a;

procedure arr_dump (var arr : array of integer);

var i : integer;

begin

        for i := 0 to N - 1 do { Attention!!! 0 .. N - 1 }
        begin

               if i > 0 then write(', ');
               write(arr[i]);

        end;

end;

begin

        for i := 1 to N do arr[i] := i;

        writeln('w/o procedure');

        for i := 1 to N do { Attention!!! 1 .. N }
        begin

               if i > 1 then write(', ');
               write(arr[i]);

        end;

        writeln();
        writeln('arr_dump()');

        arr_dump(arr);

        readln();

end .


Когда решил выводить содержимое массива через процедуру, то стал натыкаться на run-time error 201 (Range check error).
С помощью некоторых исследований я обнаружил, что массив в процедуре уже имеет индексы от 0 до 19-ти, а до этого было от 1 до 20.

Что за?!

P.S. У меня Free Pascal

  Ответить  
 
 автор: Trianon   (12.10.2008 в 10:18)   письмо автору
 
   для: BinLaden   (12.10.2008 в 00:42)
 

почему бы и нет?
Тип-то поменялся.
Если бы написали procedure arr_dump (var arr : a); то получили бы свои от 1 по N... наверняка.

  Ответить  
 
 автор: BinLaden   (12.10.2008 в 10:58)   письмо автору
 
   для: Trianon   (12.10.2008 в 10:18)
 

Вот зачем вообще нужно указывать тип, если это указатель?

  Ответить  
 
 автор: Trianon   (12.10.2008 в 11:03)   письмо автору
 
   для: BinLaden   (12.10.2008 в 10:58)
 

потому что pascal - типизированный язык. Соответственно, и указатели типизированные.
Просто типизация статическая, а не времени выполнения.

  Ответить  
 
 автор: BinLaden   (12.10.2008 в 21:30)   письмо автору
 
   для: Trianon   (12.10.2008 в 11:03)
 

Это действительно так.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования