Помощь - Поиск - Пользователи - Календарь
Полная версия: Массивы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
starmaster
Почему не работает этот пример?
Код

program Project2;

{$APPTYPE CONSOLE}

uses
 SysUtils;

var A,C,i:integer;
var Mas:array of integer;
begin
 i:=0;
 repeat
      ReadLn(A);
      Mas[i]:=A;
      inc(i);
 until A=0;
 SetLength(Mas,i);
 C:=Length(Mas);
 WriteLn(C);
 ReadLn;
end.
Digitalator
Потому что программист его писал хреновый! :p8:
setlength(Mas,<len>);

Перед тем как писать вопрос в форуме нужно хотяб посмотреть описание ошибки в справке, а если уж там не понятно написано, хотяб написать какая возникла ошибка! <_<
xds
Там "Access Violation": программа пытается записывать данные в динамический массив, не выделив предварительно память под них (не определив размер массива, достаточный для добавления очередного элемента). Работоспособный код, полученный из данного путем наименьшего сопротивления, будет выглядеть так:
Код
program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;

var A,C,i:integer;
var Mas:array of integer;
begin
i:=0;
repeat
  ReadLn(A);
  SetLength(Mas,i + 1);
  Mas[i]:=A;
  inc(i);
until A=0;
C:=Length(Mas);
WriteLn(C);
ReadLn;
end.
Digitalator
xds, все, конечно, правильно.. но зачем писать проги тем кто даже хелп по ctrl+f1 читать не хочет?
xds
Иногда люблю поиграть в снисходительного... rolleyes.gif
GoodWind
Цитата
Потому что программист его писал хреновый!

Digitalator, попрошу не выражаться !!! angry.gif
Digitalator
А что такого? Не нравятся подобные выражения, исправьте правила форума - никого из участников я тут не оскорблял.... ответ вполне даже конкретный на поставленный вопрос lol.gif

ЗЫ: не знаю как у вас, сколько видел форумов, ни на одном подобные выражения не считались нарушениями
GoodWind
я не сказал, что это нарушение, просто существует такое понятие, как культура речи ;)
Digitalator
Ну знаешь ли..........

Когда модеры/админы пишут подобные:
Цитата
попрошу не выражаться

посты, считается что были нарушены правила. Если правила не были нарушены, модеры/админы молчат.

Или это пример того, как флудят модеры? smile.gif реши уж наконец, ты занимаешься серьезным делом или пытаешься везде где только можно свое слово вставить (не в обиду)

и как посоветовал тебе олег: не переуссердствуй. :no:
GoodWind
Цитата
Когда модеры/админы пишут подобные:

а если это была просьба не как модера, а как человека ?
мне лично не приятно видеть такие посты...

Цитата
Или это пример того, как флудят модеры?

и вот, чтобы флуд не продолжать остановим сей флейм, OK ? :p4:
Digitalator
Цитата
мне лично не приятно видеть такие посты...

Да нуууууууууууууууу rolleyes.gif

Цитата
и вот, чтобы флуд не продолжать остановим сей флейм, OK ?

ОК!
Altair
Цитата
а если это была просьба не как модера, а как человека ?
мне лично не приятно видеть такие посты...

В таком случае пиши ему на PM.
А то вышло, что почти всетема зафлуженна. smile.gif
starmaster
Ладно, ладно ребята, хватит тут вам обсуждать культуру речи и тому подобное. Просто с массивами я недавно начал работать и перед тем как задавать вопрос сюда читал книжку и искал в инете, но там нигде не было написано что в динамических массивах SetLength устанавливается до присваивания какого-либо значения в массив. Вот подумайте логически: почему бы массиву самому не определять свой размер? Я также думал...
Altair
Цитата
: почему бы массиву самому не определять свой размер

Потому что у него нечем думать smile.gif
а если серьезно, то память-то ограниченна...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.