Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2008, 20:29   #1
delphin100
Он лайн
Форумчанин
 
Аватар для delphin100
 
Регистрация: 26.09.2007
Сообщений: 173
Сообщение Чистка переменных

Как обнулить или :=''; или ещё что но сразу для всех переменных приложения. А то когда дофига переменных писать долго.
delphin100 вне форума Ответить с цитированием
Старый 29.06.2008, 21:19   #2
hoza_syl
Форумчанин
 
Аватар для hoza_syl
 
Регистрация: 23.05.2008
Сообщений: 219
По умолчанию

Мне кажется для всех переменных не получится.
The Revolution is Now!
hoza_syl вне форума Ответить с цитированием
Старый 29.06.2008, 21:34   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Создай объект, в нем твои переменные,
объект.Free;
объект.Create;
и у тебя всё обнулено.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 29.06.2008, 21:39   #4
Старовъръ
Форумчанин
 
Аватар для Старовъръ
 
Регистрация: 25.06.2008
Сообщений: 100
По умолчанию

А если создать объект, например, Rubbish. В него кидать ссылки(именно ссылки) на другие объекты. Удалятся ли эти объекты, если освободить Rubbish?
Старовъръ вне форума Ответить с цитированием
Старый 29.06.2008, 23:35   #5
Jupiter
Пользователь Подтвердите свой е-майл
 
Регистрация: 26.03.2008
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Старовъръ Посмотреть сообщение
А если создать объект, например, Rubbish. В него кидать ссылки(именно ссылки) на другие объекты. Удалятся ли эти объекты, если освободить Rubbish?

Нет объекты не удалятся, а останутся в памяти до тех пор, если не ошибаюсь, пока приложение не будет закрыто. Это если конечно вы их создали в этом приложении, получится - напрасная трата памяти.
Здесь принцип таков:

Например:

Код:
MObj = Class(TPersistent)
//......................................
public
Property L1 : TStringLst Read FL1 Write FL1;
..............................................
Destructor Destroy; Override;
//.................................................
implementation

...................................
Destructor MObj.Destroy;
begin
//.............................
L1.Free. // Вот это и нужно добавить для корректного освобождения памяти
Inherited Destroy;
end;
на словах:
Когда будет вызываться MObj.FRee, он проверит указатель на MObj,
и вызовет MObj.Destroy, а здесь мы прописали L1.Free.
Значит L1 корректно уничтожится, память освободится, а затем, уничтожится и наш объект.
Jupiter вне форума Ответить с цитированием
Старый 29.06.2008, 23:43   #6
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 293
По умолчанию

мне кажется, что лишний код это лишние байты в программе...
Черничный вне форума Ответить с цитированием
Старый 30.06.2008, 00:12   #7
Jupiter
Пользователь Подтвердите свой е-майл
 
Регистрация: 26.03.2008
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Черничный Посмотреть сообщение
мне кажется, что лишний код это лишние байты в программе...
Если не писать этот "лишний" код,будет потеря памяти, это если останется один объект,
то ещё ничего страшного(да и то не есть хорошо)
а если таких объектов 100000.... то память когда нибудь закончится.

помоему это далеко не лишний код, лучше добавить пару строк при разработке,
чем потери во время работы программы.
Jupiter вне форума Ответить с цитированием
Старый 30.06.2008, 00:18   #8
Старовъръ
Форумчанин
 
Аватар для Старовъръ
 
Регистрация: 25.06.2008
Сообщений: 100
По умолчанию

Юпитер, благодарю
Старовъръ вне форума Ответить с цитированием
Старый 30.06.2008, 10:35   #9
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
А если создать объект, например, Rubbish. В него кидать ссылки(именно ссылки) на другие объекты. Удалятся ли эти объекты, если освободить Rubbish?
Если тебе просто интересно, то нет, не удалятся.
А если интересует процесс удаления объектов, то объект удаляется либо вручную, либо его удаляет объект родитель при своем собственном удалении. Нужно четко представлять, как поступать в каком случае, когда вручную а когда автоматом освобождать. Чтобы автоматом удалялся нужно при создании указывать владельца, например:

SomeClass:=TSomeClass.Create(SomeCo mponent);
в этом случае объект SomeClass освободится автоматически после освобождения объекта SomeComponent

SomeClass:=TSomeClass.Create(nil);
в этом случае освобождать нужно вручную
SomeClass.Free;
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 30.06.2008, 10:53   #10
Старовъръ
Форумчанин
 
Аватар для Старовъръ
 
Регистрация: 25.06.2008
Сообщений: 100
По умолчанию

Понял, не дурак. Дурак бы не понял
Старовъръ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чистка памяти Shouldercannon Общие вопросы Delphi 2 18.07.2008 11:28
Вальс переменных Иллидан Общие вопросы Delphi 9 27.01.2008 10:39
Замена переменных NoName_emaNoN Win Api 4 18.01.2008 09:05
Ошибка в переменных Maugli-rus Общие вопросы Delphi 2 24.12.2007 07:44
список переменных krasivosleva Microsoft Office Excel 2 26.11.2007 19:32