Главная страница
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.034 c
14-1078827222
alexEagle
2004-03-09 13:13
2004.04.04
Вызов из приложения HTML Help


14-1079076635
-=гость=-
2004-03-12 10:30
2004.04.04
Как писать хелп?


3-1078328414
В л а д и м и р
2004-03-03 18:40
2004.04.04
Экспорт данных из таблицы Exel в таблицу базы данных


6-1075191194
littel
2004-01-27 11:13
2004.04.04
КАК узнать рабочую группу компа???


1-1079592884
sav
2004-03-18 09:54
2004.04.04
Процессы и потоки