![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
динамический массив [D2005, 2003]
Std © (2006-04-07 01:09:00)Доброго времени.
Подскажите можно ли ка кто добавлять в массив элементы не задавая при этом размер массива?
тоесть зделать типа
var
arr:array of integer;
n:integer;
begin
...
n:=0;
if a<15 then
arr[n]:=a;
при этом а берется из большого списка, и заранее не известно сколько будет элементов в вассиве..
Std (2006-04-07 15:25:00) [1]вот зделал вот так:
var
i,j:integer;
arr:array of integer;
begin
i:=0;
j:=1;
цикл который проверяет весь список
if x<15 then
begin
SetLength(arr,j);
arr[i]:=a;
inc(i);
inc(j);
end;
конец цикла
работает нормально, так что всем спасибо за беспокойство
tesseract (2006-04-07 09:42:00) [2]tlist - ему размер не задаётся.
Anatoly Podgoretsky (2006-04-07 09:18:00) [3]Можно, но только будет рантайм ошибка
Германн (2006-04-07 02:02:00) [4]
> Std (07.04.06 01:09)
>
> Доброго времени.
> Подскажите можно ли ка кто добавлять в массив элементы не
> задавая при этом размер массива?
Нельзя, никак, никогда. Увы.
Тебе посоветовали способы оптимизации вызовов SetLength при загрузке файла в динамический массив. Имхо - это максимум возможного.
unknown (2006-04-07 01:40:00) [5]
> Std (07.04.06 01:09)
> не задавая при этом размер массива
Как это вы себе представляете?
> при этом а берется из большого списка, и заранее не известно
> сколько будет элементов в вассиве
Ну и что?
Допустим n - счетчик строк в списке, a - значение из строки списка, тогда
получится примерно следующее:
if n=Length(arr) then
SetLength(arr,n+1);
arr[n]:=a;