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

Вниз

Утечка памяти DataSet   Найти похожие ветки 

 
Вова   (2012-10-13 03:42) [0]


BaseAlphabet.ClientDataSet1.first;
While Not BaseAlphabet.ClientDataSet1.Eof Do
begin
     BaseAlphabet.CharacterProperties.first;
     While Not BaseAlphabet.CharacterProperties.Eof Do
     begin
           BaseAlphabet.CharacterProperties.Next;
      end;
      BaseAlphabet.ClientDataSet1.Next;
end;


Вообщем в результате продолжительных изысканий, связанных с невероятно бурным ростом программы в памяти, все что у меня осталось от программы это вот эти 2 цикла. И я повесил их запуск на кнопку. И каждый раз нажимая кнопку я обнаруживаю, что программа стала занимать больше места. И так до бесконечности. У меня 2 вопроса - че за фигня? и что делать?


 
Вова   (2012-10-13 03:58) [1]

вопрос снимается, чуть чуть недотерпел ) оказалось что эту программу можно еще упростить


BaseAlphabet.ClientDataSet1.first;
While Not BaseAlphabet.ClientDataSet1.Eof Do
     BaseAlphabet.ClientDataSet1.Next;


До такой, и результат будет тот же. Также выяснилось что в данном цикле вызывается событие ClientDataSet1AfterScroll, в котором и обнаружилась протечка. Правда вот дело в том, что нафиг мне не нужно чтобы оно вызывалось при программном проходе по таблице, притом что форма даже не открыта, хоть и создана.

В отчаянии, я попробовал сделать так:
BaseAlphabet.ClientDataSet1.DisableControls;

       BaseAlphabet.ClientDataSet1.first;
       While Not BaseAlphabet.ClientDataSet1.Eof Do
          BaseAlphabet.ClientDataSet1.Next;

       BaseAlphabet.ClientDataSet1.EnableControls;


Но это совсем мне не помогло. Итого утечка памяти устранилась, но выяснилось, что программа тратит время на вещи, на которые абсолютно в данной ситуации не нужно тратить время. При этом в интерактивном режиме через DBGrid когда по таблице лазишь, это собитие делает полезную работу.

Откуда возник новый вопрос, можно ли сделать так чтобы при программном прохождении цикла это событие не активировалось?


 
Inovet ©   (2012-10-13 07:03) [2]

Деактивировать перед, активировать после.



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

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

Наверх




Память: 0.47 MB
Время: 0.007 c
15-1355289271
Andy BitOff
2012-12-12 09:14
2013.04.21
Ждем 12.12.12 12:12:12.12


2-1349962404
Wadimka
2012-10-11 17:33
2013.04.21
Как изменить имя текущего пользователя Windows?


4-1264592623
Владислав
2010-01-27 14:43
2013.04.21
Входит ли пользователь в группу AD.


15-1356228928
makz
2012-12-23 06:15
2013.04.21
Курсор мыши


15-1356108128
alexdn
2012-12-21 20:42
2013.04.21
Где ещё можно продать программу?