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

Вниз

Правильность уничтожения   Найти похожие ветки 

 
webpauk   (2007-02-20 19:47) [0]

var
 Arr: array of TImage;

procedure TForm1.Create(...
begin
 CreateArr;
end;

procedure TForm1.CreateArr;
var
 I: Integer;
begin
 SetLength(Arr, 10);
 for I:=Low(Arr) to High(Arr) do
 begin
   Arr[I]:=TImage.Create(Form1.ScrollBox1);
   Arr[I].Parent:=Form1.ScrollBox1;
   Arr[I].Left:=....
   Arr[I].OnClick:=DoSomeThing;
 end;
end;

procedure TForm1.DoSomeThing(Sender: TObject);
var
 I: Integer;
begin
 for I:=High(Arr) downto Low(Arr) do
 begin
   TImage(Arr[I]).Free;
 end;
end;


правильно ли я удаляю компоненты, представленные в виде массива?


 
webpauk   (2007-02-20 19:48) [1]

собственно говоря интересует лишь: TImage(Arr[I]).Free; - Да/Нет?


 
Loginov Dmitry ©   (2007-02-20 19:56) [2]

Arr[I].Free;

Правильно!


 
icWasya ©   (2007-02-21 09:58) [3]

А для гарантии


begin
 Arr[I].Free;
 Arr[I]:=Nil;
end;


 
REA   (2007-02-21 10:06) [4]

Используй TList или TObjectList


 
RASkov   (2007-02-21 10:37) [5]

Тоже самое, что и в [3] - только одной строкой FreeAndNil(Arr[i]);

> [4] REA   (21.02.07 10:06)

Можно..., но в приведенном примере более подойдет статич массив, т.е. var Arr: array [0..10] of TImage;


 
StriderMan ©   (2007-02-21 11:48) [6]


> TImage.Create(Form1.ScrollBox1);

с такой конструкцией НЕ НУЖНО ручками уничтожать. ScrollBox1 при разрушении должен все грохнуть. Хочешь уничтожать ручками - создавай так:

TImage.Create(nil);


 
Юрий Зотов ©   (2007-02-21 12:07) [7]

> StriderMan ©   (21.02.07 11:48) [6]

Да, но если их нужно уничтожить раньше?

> webpauk

Все верно.


 
webpauk   (2007-02-21 12:13) [8]


> Юрий Зотов ©   (21.02.07 12:07) [7]

спсб
уже заработало
ошибка в 17 строке была.... 8)


 
Суслик ©   (2007-02-21 12:15) [9]

ну если уж советы даются, то я тоже скажу :)

можно так переписать - эффективней по скорости выполнения будет (чуть-чуть).

procedure TForm1.CreateArr;
var
I: Integer;
Img: TImage;
begin
SetLength(Arr, 10);
for I:=Low(Arr) to High(Arr) do
begin
  Img := TImage.Create(Form1.ScrollBox1);
  Arr[I]:=Img;
  Img.Parent:=Form1.ScrollBox1;
  Img.Left:=....
  Img.OnClick:=DoSomeThing;
end;
end;


 
Loginov Dmitry ©   (2007-02-21 13:25) [10]

> можно так переписать - эффективней по скорости выполнения
> будет (чуть-чуть).


:))



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

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

Наверх




Память: 0.48 MB
Время: 0.03 c
1-1171703509
Medved_
2007-02-17 12:11
2007.04.15
Печать Canvas


2-1174914935
VitAngel
2007-03-26 17:15
2007.04.15
Вопрос по CopyFile


15-1173877098
ArchValentin
2007-03-14 15:58
2007.04.15
Delphi & WindowsVista


2-1174747778
Malik
2007-03-24 17:49
2007.04.15
Вот про TStrings


15-1174643044
Post_
2007-03-23 12:44
2007.04.15
Вопросик