Динамические массивы 4
Автор: Виталий
Я хочу написать об использовании динамических массивов. Для того чтобы с ними
работать можно использовать два вида объявлния в типах
type
DAr = array of real;
var
A: DAr;
|
или сразу
Таким образом мы объяыили ссылку на область памяти. Для того чтобы указать
размер воспользуемся процедурой SetLength, ее можно использовать в любых местах
и определять размера массива тот, который необходим в данную минуту.
Так мы создали массив состоящий из 7 элементов начиная с 0. Важно! Первый
элемент в динамическом массиве всегда нулевой. Для определения верхний границы
используем функцию Hihg
I - верхняя граница. Для определения длины Length(A), для определения нижней
границы Low(A). При нулевой длине массива High, возращает -1. Пример:
var
a,b: array of integer;
begin
SetLength(a,2);
SetLength(b,2);
a[0]:=2;
b[0]:=3;
a:=b;
b[0]:=4;
end;
|
После этих манипуляций а[0] равно 4. Дело в том при присвоении a:=b не
происходит копирование т.к. а, b, это всего лишь указатели на область памяти.
Для копирования необходимо использовать функцию Copy.
Я надеюсь что это кому-нибудь поможет в работе.
Всего наилучшего. Виталий
P.S. Не советую изменять длину массивов в DLL, у меня при этом возникала
ошибка Acess violation побороть ее мне так и не удалось.
|