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

Вниз

Динамический массив   Найти похожие ветки 

 
Nonamik   (2004-03-19 08:35) [0]

Доброе утро.

Хотелось бы уточнить вот какой вопрос:

при объявлении в процедуре динамического массива, например
procedure proc;
var arr: array of TColor;
begin
 SetLength(arr, 3);
 ...
end;

нужно ли освобождать память в хвосте процедуры или нет и если да, то каким способом лучше? В справке дан пример без освобождения, но хочеться уточнить.

да, и вот еще один:
Перебор компонентов на форме следующим образом, будет выдавать всегда одинаковую последовательность (при постоянном количестве компонентов) или нет?

var i: byte;
...
 for i := 0 to Form1.ComponentCount - 1 do
   ShowMessage(Form1.Components[i].Name);

...

Спасибо.


 
MBo ©   (2004-03-19 08:38) [1]

1. Не надо (если массив состоит из простых статических данных)
2. Да


 
Вованчик ©   (2004-03-19 08:44) [2]


> MBo ©   (19.03.04 08:38) [1]

спасибо


 
Вованчик ©   (2004-03-19 08:45) [3]

... пардон ни туда написал


 
Тимохов ©   (2004-03-19 10:41) [4]

Можно добавить?

> 1. Не надо (если массив состоит из простых статических данных)

1. Не дано (если массив состоит из простых статических данных и динамических, за которые отвечает сама дельфи (длинные строки, дин. массивы, интерфейсы))


 
Goida ©   (2004-03-19 10:44) [5]


> 1. Не надо (если массив состоит из простых статических данных)

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


 
Тимохов ©   (2004-03-19 10:53) [6]


> Goida ©   (19.03.04 10:44) [5]

следуя вашей логике в конце процедур надо также и строки приравнивать пустой строке и интерфейсам nil присваивать.


 
Goida ©   (2004-03-19 11:00) [7]


> Тимохов

Нет, строки не составные объекты, а интерфейсам, да


 
Goida ©   (2004-03-19 11:03) [8]

Да, можно делать и так как вы говорите, только коментировать все происходящее. Это даже лучше, гораздо лучше...


 
Тимохов ©   (2004-03-19 11:04) [9]


> Нет, строки не составные объекты, а интерфейсам, да

Что значит не составные?
Те же динамические объекты, что и дин. массивы, память для которых автоматически выделяется тем же allocmem. Единство на лицо, имхо.


 
Goida ©   (2004-03-19 11:12) [10]

Я говорю не о реализации, а о человеческом факторе.


 
Тимохов ©   (2004-03-19 11:22) [11]


> Goida ©   (19.03.04 11:12) [10]

есть ощущение, что вы сейчас пишете(раньше писали) на другом языке, например, на си.

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


 
афвуд ©   (2004-03-19 12:36) [12]


> Перебор компонентов на форме следующим образом, будет выдавать
> всегда одинаковую последовательность (при постоянном количестве
> компонентов) или нет?
>
> var i: byte;
> ...
>  for i := 0 to Form1.ComponentCount - 1 do
>    ShowMessage(Form1.Components[i].Name);


Ну не всегда. Если ты не делаешь всяких там Form1.RemoveComponent(Form1.Components[0]); :)), то всё будет хорошо.



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

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

Наверх




Память: 0.49 MB
Время: 0.025 c
3-1078152683
Rule
2004-03-01 17:51
2004.04.04
Помогите разобратся чего я не так делаю при создании Мидас прилож


7-1074007088
_наблюдатель_
2004-01-13 18:18
2004.04.04
crHandPoint


1-1077897634
Andrew
2004-02-27 19:00
2004.04.04
Сертификаты открытого ключа


1-1078996913
Дас Виндовс 45
2004-03-11 12:21
2004.04.04
Сортировка массива


14-1079074549
Rentgen
2004-03-12 09:55
2004.04.04
(2*Pi*R*R)/Z*R...