Главная страница
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.02 c
2-1349939341
Grimm375
2012-10-11 11:09
2013.04.21
if else if несколькольких дефайнов


2-1350085369
Вова
2012-10-13 03:42
2013.04.21
Утечка памяти DataSet


2-1350042679
DdiK
2012-10-12 15:51
2013.04.21
исправить ошибку regular procedure and method pointer


15-1356467402
Юрий
2012-12-26 00:30
2013.04.21
С днем рождения ! 26 декабря 2012 среда


15-1355987109
Toretto
2012-12-20 11:05
2013.04.21
присвоение результата фанции