Что же до системы с
New:Значит так - каждый элемен массива должен распологаться динамически в памяти, и содержать в себе:
1. Само значение элемента (строка, число, не важно...)
2. Указатель, где в памяти находится следующий элемент.
Таким образом зная указатель на самый первый элемент массива можно прочитать и его значение, и узнать, где находится следующий элемент массива, и так до самого конца. Изменять размер массива можно динамически - это как open arrays, тоесть - хочешь - добавь в конец новый элемент, а в предыдущем укажи ссылку на него, хочешь, вставь между двумя элементами массива ещё один (из предыдущего сделай ссылку на него, а у него сделай ссылку на следующий). Важно, то что при таком методе необходимо в отдельной переменной хранить ссылку на самый первый элемент массива, иначе можно просто потерять весь массив в памяти :)
Вот тебе пример:
Код
Type
PData = ^TData; {указатель на элемент массива}
TData = record {Сам элемент массива}
N: Longint; {Число - содержимое элемента}
Next: PData; {Указатель на следующий элемент массива}
End;
Var
Temp,First: PData; {Два элемента, один из них для работы с текущим элементом, другой для указания, где начинается массив}
p:word;
begin
temp:=nil; {укажем, что первый элемент пока не заполнен}
Repeat
ReadLn(X);
If X = 0 then Break; {Если мы ввели ноль, то всё.. больше элементов не надо}
If temp = nil then {если это самый первый элемент, то...}
begin
New(temp); {Создадим его}
first:=temp; {Запомним где он находится в first}
end else {Иначе это уже не первый}
begin
New(temp^.Next); {Создадим новый}
temp:=Temp^.next; {Перенесёмся в него. temp теперь уже новый}
end;
temp^.N := X; {Занесём в него значение}
data^.Next := nil; {Укаджем, что следующего ещё нет}
Until False;
{Теперь выведем все значения, чтоб тебе было более понятно}
temp:=first; {Установим первый элемент}
p:=0; {Номер текущего элемента}
while temp<>nil do {Пока мы находим элемент}
begin
inc(p); {наращиваем номер текущего элемента}
writeln('a(',p,')=',temp^.N); {выводим его}
temp:=temp^.Next; {Переносимся в следующий элемент}
{Если следующий элемент nil, то temp тоже странет nil, и цикл while закончится}
end;
end.