Me estoy encontrando con el problema que cada vez que actualizo en memoria el ClientDataset (sin hacer el Apply) me va duplicando la memoria consumida y luego al hacer el ClientDataSet.ApplyUpdates(0) ademas de tardar una eternidad no devuelve toda la memoria y asi sigue creciendo hasta que Falla.
El ClientDataSet esta enlazado con un DataSetProvider y este con un TSDQuery (SQLDirect)
Este es el código:
Código Delphi
[-]
var
Pos: array [0..299] of TPosData;
begin
for i := 0 to 299 do
with Pos[i] do
begin
if cds.Locate('U_ID', i+1, [loCaseInsensitive]) then
cds.Edit
else
begin
cds.Insert;
cds.FieldByName('U_ID').AsInteger := i+1;
end;
blobF := cds.FieldByName('DATA') as TBlobField;
bs := cds.CreateBlobStream(blobF, bmWrite);
try
bs.Write(Pos[i], SizeOf(Pos));
finally
bs.Free;
end;
cds.Post;
end;
end;
Alguna idea?