Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.032 c
14-1078095046
m_a_r_t
2004-03-01 01:50
2004.04.04
Художественная книга на английском языке


1-1079433269
Rem
2004-03-16 13:34
2004.04.04
Русские шрифты в Formula One Ver. 3.0.4


6-1075445567
AlexTregubov
2004-01-30 09:52
2004.04.04
Как изменить IP адрес DNS сервера


4-1074958399
Gibon
2004-01-24 18:33
2004.04.04
Как поставить хук мышы на чужую програму ?


14-1079075366
Ega23
2004-03-12 10:09
2004.04.04
Зимбабве поймало 64 американских шпиона





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский