![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Здравствуйте, у меня вопрос, с которым вот уже несколько дней не могу разобраться.
Переделал всё на максимально простой уровень, чтобы всем было понятно. Допустим у нас есть процедура: ---------- Случай 1 ---------- Код:
Procedure AddObject; var myObject:TButton; begin myObject:=TButton.Create(Form1); myObject.Caption:='Test Button'; myObject.Parent:=Form1; AddToList(myObject); // и т.п. end; может нужно как-то создать массив, в котором будут указатели(но у меня не получается) ![]() ---------- Случай 2 ---------- Если этот объект объявлен в глобальных переменных: Код:
var myObject:TButton; Ptr:^TButton; Код:
Procedure AddToList(var Obj:TButton); begin Ptr:=Addr(Obj); end; Procedure AddObject; begin myObject:=TButton.Create(Form1); myObject.Caption:='Test Button'; myObject.Parent:=Form1; AddToList(myObject); // и т.п. end; Procedure DeleteObj; begin FreeAndNil(Ptr^); end; ______________________ немного другой вопрос: ---------- Случай 3 ---------- допустим у нас это переменная глобальная: Код:
var myObject:TButton; Код:
var // глобальные переменные myObject:TButton; Ptr:array[1..100] of ^TButton; Count:Integer; Код:
Procedure AddToList(var Obj:TButton); begin Inc(Count); Ptr[Count]:=Addr(Obj); end; Procedure AddObject; begin myObject:=TButton.Create(Form1); myObject.Caption:='Test Button'+IntToStr(Random(1000)); myObject.Parent:=Form1; myObject.Left:=Random(100); MyObject.Top:=Random(50); AddToList(myObject); // и т.п. end; Procedure DeleteObj; var i:integer; begin For i:=1 to Count do FreeAndNil(Ptr[i]^); end; ![]() Если Вы находите ошибки, исправить которые дело долгое и нудное, ничего не делайте - просто внесите их в список особенностей ![]() Последний раз редактировалось Oleg, 17.08.2009 в 20:34. Причина: возник вопрос, который не дает покоя :( |