Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.27;
Скачать: CL | DM;

Вниз

Передать параметром процедуре указатель на массив   Найти похожие ветки 

 
inferno   (2009-01-13 08:27) [0]

Здравствуйте.

type
 TControl_array = array of TControl;
 PControl_array = ^TControl_array;

var
 dis_panels:array of tpanel;
 dis_edits:array of TEdit;
 dis_button_del: array of TSpeedButton;


Идея такая. Есть процедура, работающая с массивом. массивы разных типов как описано выше.
Код процедуры:

procedure Tgrouptest_form.renum_array(arr:pControl_array; del_num:integer);
var i:integer;
begin
for i:= del_num to Length(TControl_array(arr))-2 do begin
    TControl_array(arr)[i]:=TControl_array(arr)[i+1];
    TControl_array(arr)[i].Tag:=i;
end;
SetLength(TControl_array(arr),Length(TControl_array(arr))-1);
end;

Вызов:
renum_array(pointer(dis_panels),n);

Дает коректный результат до тех пор пока дело не дойдет до удаления последнего элемента, в этом случае длина массива принимает непредсказуемое значение :)
Может быть такая реализация задачи недопустима?


 
MBo ©   (2009-01-13 08:57) [1]

в заголовке
arr:pControl_array
а в процедуре
TControl_array(arr)

А почему бы не использовать списки (TComponentList)



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

Текущий архив: 2009.12.27;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.022 c
15-1256434719
Antoxa
2009-10-25 04:38
2009.12.27
Почему сайт "умер"..?


15-1256342365
POOP
2009-10-24 03:59
2009.12.27
Простое проектирование схем


3-1232343690
pavel_guzhanov
2009-01-19 08:41
2009.12.27
Можно ли проиндексировать поле в представлении?


15-1256496465
palva
2009-10-25 21:47
2009.12.27
Какой-то тупой развод


15-1256851810
Юрий
2009-10-30 00:30
2009.12.27
С днем рождения ! 30 октября 2009 пятница