Главная страница
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.005 c
2-1350119385
Вова
2012-10-13 13:09
2013.04.21
Как скопировать строку в буфер обмена и вставить ее в программу


8-1231501163
Б
2009-01-09 14:39
2013.04.21
Обрезка растра


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


15-1356101477
Kerk
2012-12-21 18:51
2013.04.21
А где есть фотографии старых компьютеров?


15-1356292928
Павел Калугин
2012-12-24 00:02
2013.04.21
Опять анкеты?