Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Глюки, связанные с TListView и памятью [D5, Win95/98, WinME, NT4, Win2k, WinXP]


Страницы:   1 2

Smok_er ©   (2002-05-29 13:10:00) 

Уважаемые мастера!
Помогите пожалуйста.
Я пишу дипломную работу - анализ логфайлов Apache, результаты анализа вывожу в сабже. После вывода очередной статистики сильно заполняется память, причем по какой-то непонятной мне причине память от предыдушего просмотра совершенно другой статистики не освобождается (использую метод Clear).
В результате, после 3-4 просмотров появляется ошибка Out of resources и винда начинает конкретно глючить.
В принципе, не пойму еще и то, почему не освобождается память TStringList"a. Т.е., при использовании что метода Free, что более жесткого Destroy - память, используемая программой не уменьшается :(
Может быть кто-то знает, как с этим бороться?


NailS   (2002-05-29 16:48:00) [21]

А ты уверен, что именно здесь собака порылась?
Может просто UserAgent не освобождаются после использования?


Smok_er   (2002-05-29 13:56:00) [22]

ОК!
Вот код вывода в ListView статистики, например по User-Agent"ам.
Вся остальная выводится также.
Причем основной глюк приходится на тот момент, когда я прокручиваю scroll bar.
Т.е. память под программу резко увеличивается, а после перехода на другую статистику не уменьшается.
В данном примере в ListView выводится порядка 400 записей.
PrepareListView;
NewColumn := frMain.lvReports.Columns.Add;
NewColumn.Caption := "User-Agent";
NewColumn := frMain.lvReports.Columns.Add;
NewColumn.Caption := "Hits";
frMain.lvReports.Columns.Items[0].Width:= frMain.lvReports.Width-60-20;
frMain.lvReports.Columns.Items[1].Width:= 60;
frMain.lvReports.Items.BeginUpdate;
for i:=Low(UserAgent) to High(UserAgent) do
begin
ListItem := frMain.lvReports.Items.Add;
ListItem.Caption := UserAgent[i].Name;
ListItem.SubItems.Add(IntToStr(UserAgent[i].Hits));
end;
frMain.lvReports.Items.EndUpdate;


Digitman   (2002-05-29 13:35:00) [23]

Ну и как ты себе мыслишь это - без оригинального кода сказать тебе, что и где ты там натворил некорректно ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо