Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.03 c
15-1139561483
@BraIN
2006-02-10 11:51
2006.03.05
Что бы это значило..


15-1138602666
Knight
2006-01-30 09:31
2006.03.05
АС "Бюджет 6.0"... НПО "Криста"


3-1136463543
Нютик
2006-01-05 15:19
2006.03.05
Дроби в Аксесе!!!!


2-1140297348
Alex_C
2006-02-19 00:15
2006.03.05
Перехват нажатия клавиш


4-1134604307
Volf_555
2005-12-15 02:51
2006.03.05
Как изменить аттрибуты файла?