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

Вниз

StringGrid и об екты.   Найти похожие ветки 

 
antonn ©   (2004-12-20 13:10) [0]

Здравствуйте мастера! Возник такой вопросик. У меня есть объект который нужно вставить в StringGrid. В ListBox я вставлял так: ListBox.Items.AddObject(Work_log^.s1 , TObject(Work_log)); Со StringGrid так не катит, делаю так:
new(ListTime);
ListTime^.Mode:="232";
ListTime^.time:="23234534";
ListTime^.time1:="4545";
StringGrid1.Objects[0,2]:= TObject(ListTime);

Правильно ли я делаю? Мне кажется это коряво, что должен быть способ лучше.


 
Семен Сорокин ©   (2004-12-20 14:39) [1]

правильно, главное не забывать чистить за собой :)


 
tradakad   (2004-12-20 14:49) [2]

я в ListBox добавлял объекты так

function TfMain.AddToListBox(wTitle:string):boolean;
begin
     if FindComponent("CheckBox"+inttostr(i))=nil then
     begin
        fMain.ListBox1.AddItem(inttostr(i),self);
        with TCheckBox.Create(self) do
        begin
           Name:="CheckBox"+inttostr(i);
           Top:=chTop;
           left:=75;
           height:=20;
           width:=500;
           Caption:="            "+wTitle;
           Checked:=true;
           Parent:=fMain.ListBox1;
        end;
     end;
     chTop:=chTop+20;
     inc(i);
end;


 
antonn ©   (2004-12-20 15:28) [3]

ага, а если я уже "объективной" клетке присвою новый объект, старый удаляется?
(StringGrid1.Objects[0,2]:= TObject(ListTime);)


 
Семен Сорокин ©   (2004-12-20 16:46) [4]


> antonn ©   (20.12.04 15:28) [3]
> ага, а если я уже "объективной" клетке присвою новый объект,
> старый удаляется?
> (StringGrid1.Objects[0,2]:= TObject(ListTime);)

при таком раскладе старый уходит в небытие, и образуется утечка памяти :)
надо так:

if Assigned(StringGrid1.Objects[0,2]) then
Dispose(StringGrid1.Objects[0,2]);
StringGrid1.Objects[0,2]:= TObject(ListTime);

PS. Я вообще сторонник того чтобы выделенные объекты/указатели держать в отдельном списке (TList) и чистить их там перед обновлением.


 
antonn ©   (2004-12-20 17:22) [5]


> PS. Я вообще сторонник того чтобы выделенные объекты/указатели
> держать в отдельном списке (TList) и чистить их там перед
> обновлением.

А где их еще можно хранить? А то про утечки я слышал, но на опыте не проверял. А если программу с утечкой закрыть, память освобождается? И чем можно проверять?


 
Семен Сорокин ©   (2004-12-21 10:06) [6]


> antonn ©   (20.12.04 17:22) [5]
> А где их еще можно хранить?

Да хоть в том же массиве (динамическом или статическом - если знаешь размер).

> А то про утечки я слышал, но на опыте не проверял.
> А если программу с утечкой закрыть, память освобождается?

Освобождается

> И чем можно проверять?

MemProof поищи программку в сети.



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

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

Наверх




Память: 0.48 MB
Время: 0.042 c
11-1085129392
A1ex
2004-05-21 12:49
2005.01.09
Обработка RaiseLastOSError в KOL


3-1102327062
yuray
2004-12-06 12:57
2005.01.09
Создание процедуры программно


4-1101188780
NetDigger
2004-11-23 08:46
2005.01.09
Мониторинг процессов


14-1103021793
Alexander Panov
2004-12-14 13:56
2005.01.09
Выборы в Украине. Противостояние. (Продолжение 4)


3-1102488768
denis24
2004-12-08 09:52
2005.01.09
Работа с AdoQuery в отдельном потоке