Witam!
Mam problem z pamięcią gdy korzystam z komponentu ADODataSet1 każde czytanie powoduje zwiększenie zajętości pamięci przez program.
Program czyta dane z MSACCESS i co 10 minut wczytuje sobie na nowo dane, po pewnym czasie brakuje pamięci.
Efekt ten daje funkcja: zmienna:=ADODataSet1[pole];
Samo wywołanie funkcji np w warunku: "if ADODataSet1[pole]='adam' then" powoduje trwałe zwiększenie pamięci.
Za Chiny Ludowe nie mogę spowodować uwolnienia pamięci.
Dopiero zamknięcie programu powoduje zwolnienie pamięci.
Byłbym Bardzo wdzięczny gdyby ktoś mi pomógł.
Przesyłam procedurę w której korzystam z funkcji.
Cześć.

procedure TRadiusForm.AKTUALIZACJAClick(Sender: TObject);
const
ConnStr = 'Provider=%s;Data Provider=%s;Data Source=%s';
begin
if not ADOConnection1.Connected then
begin
try
ADOConnection1.ConnectionString := Format(ConnStr, [Provider.Text, DataProvider.Text, DataSource.Text]);
ADOConnection1.Open;
except
KomunikatyIZ('BK!! NIE OTWARTO BAZY:'+DataSource.Text);
end;
end;
if ADOConnection1.Connected then
begin
ADODataSet1.Active:=true;
ADODataSet1.First;
iu:=0;
while not ADODataSet1.Eof do
begin
inc(iu);
with ba[iu] do
begin
illog:=0;
try
uname:=ADODataSet1['User'];
upass:=ADODataSet1['User Pass'];
nasip:=KonwerujAtrybuty4ch(ADODataSet1['ip']);
nasport:=PrzeliczAtrybuty4ch(ADODataSet1['Port NAC']);
sertyp[1]:=#0;sertyp[2]:=#0;sertyp[3]:=#0;sertyp[4]:=#2;
frapro[1]:=#0;frapro[2]:=#0;frapro[3]:=#0;frapro[4]:=#1;
fraipa:=KonwerujAtrybuty4ch(ADODataSet1['Adres IP']);
fraipm[1]:=#255;fraipm[2]:=#255;fraipm[3]:=#255;fraipm[4]:=#255;
framtu:=PrzeliczAtrybuty4ch(ADODataSet1['mtu']);
fracom:=PrzeliczAtrybuty4ch(ADODataSet1['kompresja']);
kod:=ADODataSet1['kod'];
except
KomunikatyIZ('BLAD W BAZIE:'+inttostr(iu)+';'+ADODataSet1['kod']);
dec(iu);
end;
end;
ADODataSet1.Next;
end;//while
ADODataSet1.Active:=false;
LABEL3.Caption:=IntToStr(iu);
ADOConnection1.Close;
end;
end;