Главная страница
    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.025 c
4-1075291361
FireMan_Alexey
2004-01-28 15:02
2004.04.04
Осуществить перехват АПИ функции на Делфи


1-1079495063
N
2004-03-17 06:44
2004.04.04
Excel


1-1079538178
neteditor_2000
2004-03-17 18:42
2004.04.04
TListBox.AddItem и его параметры


1-1079361777
RomeoGolf
2004-03-15 17:42
2004.04.04
Canvas.ClipRect


1-1079460298
Shopot
2004-03-16 21:04
2004.04.04
Динамическая библьотека





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский