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


9-1194462751
Babooin
2007-11-07 22:12
2013.04.21
DirectX vs OpenGL


15-1356193225
alexdn
2012-12-22 20:20
2013.04.21
asp.net


2-1349878249
123456789igor
2012-10-10 18:10
2013.04.21
начало работ с БД


15-1354293250
Rouse_
2012-11-30 20:34
2013.04.21
Ну чтож, добил таки цикл статей про отладку.