Текущий архив: 2006.03.05;
Скачать: CL | DM;
Вниз
Массив из записей как с ним работать? Найти похожие ветки
← →
Корешь (2006-02-15 20:58) [0]Обявляю
type
TPostData = record
IdAccount :Integer;
IdDoc :Integer;
end;
procedure test;
var
i: Integer;
DataPost: array of TPostData;
begin
i:=0;
DataPost[i].IdAccount:=10;
^^^^^^^
А вот тут Access Violation....
......
end;
Так как правильно работать с массивом из записей?
← →
EvS (2006-02-15 21:03) [1]SetLength(DataPost;NewLength);
NewLength-размер массива
А уже потом все операции с массивом
← →
Zeqfreed © (2006-02-15 21:04) [2]Нужно использовать SetLength для установки размера массива, до этого момента массив не содержит ни одного элемента и, соответственно, к ним нельзя обратиться.
← →
Галинка © (2006-02-16 00:12) [3]Ключевое слово не "масив из записей", а "динамический массив" ))
← →
Marser © (2006-02-16 00:40) [4]> Корешь
> i: Integer;
> DataPost: array of TPostData;
> begin
> i:=0;
> DataPost[i].IdAccount:=10;
> ^^^^^^^
> А вот тут Access Violation....
Ты используешь открытый массив. А его необходимо инициализировать перед использованием. В противном случае его длина принимается равной нулю и при попытке доступа к десятому элементу, естественно, возникает ошибка. А нужно всего лишь применить SetLength и задать необходимую длину, например:procedure test;
var
i: Integer;
DataPost: array of TPostData;
begin
SetLenth(DataPost,20);
i:=0;
DataPost[i].IdAccount:=10;
← →
begin...end © (2006-02-16 08:41) [5]> Marser © (16.02.06 00:40) [4]
> Ты используешь открытый массив.
Только не открытый, а динамический. Это разные вещи...
← →
msguns © (2006-02-16 09:24) [6]>Marser © (16.02.06 00:40) [4]
Работать с заранее неизвестным числом объектов через массив, постоянно "дораспределяя" память под новые элементы, неэффективно,- об этом многократно здесь говорилось. Плюс "дырки" в массиве при удалении элементов.
Списки куда эффективнее.
← →
Marser © (2006-02-16 09:33) [7]> [5] begin...end © (16.02.06 08:41)
> > Marser © (16.02.06 00:40) [4]
> > Ты используешь открытый массив.
>
> Только не открытый, а динамический. Это разные вещи...
Ну да. Открытые массивы это параметры подпрограмм.
Что-то у меня многовато ляпов в последнее время...
> [6] msguns © (16.02.06 09:24)
Заметьте - не я вопрос задавал.
Страницы: 1 вся ветка
Текущий архив: 2006.03.05;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.01 c