Вниз
Скачать: CL | DM;

Указали на динамические массивы   Найти похожие ветки 

← →
dimon_programmer   (2004-03-22 13:45) [0]

Есть динамический массив
var
arr:array of integer;
parr:PIntegerArray;
Вопрос1: как заставить parr указывать на arr :parr:=@arr???
то есть как сделать так, чтобы код вроде

setlength(arr,10);
parr:=@arr;
ar[5]:=X;//допустим  Х=13
y:=parr^[5];//чтобы Y оказался 13, а не 0
Вопрос2: есть два указателя PintegerArray, и два интовых дин. массива,сделать чтобы указатели стали указывать на "соседние " массивы (поменялись массивами)


← →
MBo ©   (2004-03-22 13:50) [1]

parr:=@arr[0];
Но нафига?


← →
Ega23 ©   (2004-03-22 13:52) [2]

Вопрос2: есть два указателя PintegerArray, и два интовых дин. массива,сделать чтобы указатели стали указывать на "соседние " массивы (поменялись массивами)

Через 3-й указатель.


← →
Serginio666   (2004-03-22 14:42) [3]

P:Pointer;
P1,p2:array of Integer;
Begin

--------
p:=P1;
Pointer(P1):=Pointer(p2);
Pointer(p2):=p;

//=======================
Этим самы мы не даем компилятору корректировать количество ссылок на массив, тем самым ускоряя обмен и сберегаемся от уничтожения массива при достижении счетчика ссылок 0.


← →
REA ©   (2004-03-22 15:47) [4]

>ускоряя обмен и сберегаемся от уничтожения массива при достижении счетчика ссылок 0

Че то мне сдается, что не сберегаемся. Массив как ему и положено будет уничтожен есть на него Pointer или нет.


← →
Serginio666   (2004-03-22 16:38) [5]

Уничтожаться он будет при таком варианте

P:Pointer;
P1,p2:array of Integer;
Begin

--------
p:=P1;
P1:=p2; // В данном случае будет уничтожен P1
p2:=p;
и в p2 получим ...


← →
REA ©   (2004-03-22 16:42) [6]

Ну тогда сразу другая проблема - нужно самому за счетчиком следить, чтобы массив все-таки удалялся.


← →
Serginio666   (2004-03-22 16:49) [7]

В варианте  [3] мы просто не даем компилятору производить никаких действий со счетчиком ссылок массива, только и всего.
И не надо не зачем следить. Ну а если очень хочется, то помоему со смещения -8 и находится счетчик ссылок, и если надо то можно его и корректировать.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.05 c
1-1079877830
sagsoft
2004-03-21 17:03
2004.04.11
при закрытии проги вылазиет ошибка


9-1064557030
Darthman
2003-09-26 10:17
2004.04.11
PowerDraw


7-1080119578
Начинающий веб-дизайнер
2004-03-24 12:12
2004.04.11
Программное извлечение диска.


3-1079012189
Andriy Tysh
2004-03-11 16:36
2004.04.11
Help for DBVirtualTreeView or VirtualTreeView


3-1079442752
Grant
2004-03-16 16:12
2004.04.11
Бинарные файлы.




   Наверх