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

Вниз

Лог изменений в TClientDataSet   Найти похожие ветки 

 
Goobit   (2002-12-09 13:19) [0]

Кто-нибудь знает как заставить TClientDataSet не сохранять историю изменений для отката? Пробовал LogChanges := false, но при добавлении через Append..Post и после некоторого времени Delete, он все равно не чистит память! Плиз, хелп!


 
KA_   (2002-12-09 13:24) [1]

Подтверждение изменений освобождает эту память :)


 
BorisUK ©   (2002-12-09 13:25) [2]

На сколько я понял Append и Post на локале изменяют только кешированный набор данных
при вызове метода ApplayUpdates данные синхронезируются с набором данных на сервере...
После этого возможность отмены кажись отсутствует и память очишяется.
ИМХО, но логично какжется :)


 
Goobit   (2002-12-09 14:49) [3]

Я забыл упомянуть, что мой ClientDS используется исключительно в локальном режиме (без провайдера), поэтому ApplyUpdates ни к чему не приводит. Там есть еще один метод: MergeLogUpdates. Он в принципе работает, но только когда между Post"ом и Delete"ом нет сдвига курсора: если вставить между ними ClientDS.RecNo := 1, то память продолжает расти. Очень простой тест:

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
Button1.Enabled := false;
for i:=0 to 999 do begin
cdsBug.Append;
cdsBug["ID"] := 1;
cdsBug["Name"] := "BUUUUUUUUUUG!!!!";
cdsBug.Post;
cdsBug.Delete;
end;
Button1.Enabled := true;
end;

Я пытался вставлять в разные места всякие извращения и ничего не помогает: в мониторе виртуальная память продолжает расти.


 
BorisUK ©   (2002-12-09 14:56) [4]

Не те компоненты используешь значит..
Велосипед не изобретай а делай как надо!


 
KA_   (2002-12-09 15:00) [5]

В D5 у меня тоже были похожие проблемы. поставь второй UpdatePack. А лучше перейди на версию по-новее.


 
Diouzshev   (2002-12-09 15:26) [6]

Используй RX MemoryTable (названия точно не помню)


 
Goobit   (2002-12-09 16:23) [7]

2BorisUK ©: К сожалению я не участвовал в начале проекта и теперь уже поздно что-либо кардинально менять. Кроме того, это действительно ошибка в MIDAS (если никак нельзя подобную функцию отключить), которая в конечном итоге приводит к переполнению памяти и закрытию приложения. Во всяком случае в хелпе написано, что при LogChanges = false должно все прекрасно работать без провайдера.

2KA_: Пробовал в D7 - тот же эффект.

2Diouzshev: Было бы здорово, только он не поддерживает фильтра. TClientDataSet был изначально и выбран из-за этой возможности при хранении всей таблицы в памяти. Можно, конечно было бы поискать еще подобные компоненты, но хотелось бы по-человечески заюзать уже сделанное...

Спасибо всем за советы, если не получится отучить MIDAS есть память :), то, конечно, придется искать другой компонент...


 
KA_   (2002-12-10 08:57) [8]

Для D7 есть какой-то update, исправляющий эти утечки. Но он доступен только зарегистрированным пользователям. см. borland.com



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

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

Наверх




Память: 0.48 MB
Время: 0.021 c
14-99248
GarryFV
2002-12-11 12:12
2002.12.30
Глюки...


1-99090
Андрей Драница
2002-12-19 20:45
2002.12.30
Регулярные выражения


14-99292
pikimon
2002-12-09 17:10
2002.12.30
Установка под WinXP


14-99285
Tusj
2002-12-09 13:58
2002.12.30
меня по аське зовут в Индию. Врет наверное?


3-98983
archan
2002-12-09 08:46
2002.12.30
Сетевая программа