Hallo,
Ich möchte ca. 400000 Sätze in eine Access-Tabelle übertragen und habe nach ca. 60000 Sätzen bzw. nach jeder weiteren Verdopplung einen dramatischen Speicherverlust( nach 240000 Sätzen ca 500 kB). Um mögliche Fehlerquellen weitesgehend auszuschließen habe ich das ganze Programm auf die Ado-Befehle reduziert und nochmal ausprobiert( siehe nachfolgenden Quelltext): Dabei weise ich den Datenfeldern lediglich die aktuelle Speicherkapazität zu. Doch ich habe immer noch das selbe Problem. Wer kann mir helfen?
<PRE>
begin<BR>
Tablename:='Test';
AdoDataSet:=TAdoDataSet.Create(self);
AdoDataSet.ConnectionString:='Provider=Microsoft.J et.OLEDB.4.0;Data Source='{+Verz.AusVerz}+DBName+';Persist Security Info=False';
AdoDataSet.CommandText:='Select * from '+Tablename;
AdoDataSet.LockType:=ltOptimistic;
AdoDataSet.Open;
for i:=0 to 40000 do begin
Application.ProcessMessages;
AdoDataSet.Append;
for j:=0 to AdoDataSet.Fields.Count-1 do
AdoDataSet.Fields[j].Value:=getressource; { getressource verursacht keinen Speicherverlust !}
AdoDataSet.Post;
end;
AdoDataSet.Close;
AdoDataSet.Free;
end;
</PRE>
Ich möchte ca. 400000 Sätze in eine Access-Tabelle übertragen und habe nach ca. 60000 Sätzen bzw. nach jeder weiteren Verdopplung einen dramatischen Speicherverlust( nach 240000 Sätzen ca 500 kB). Um mögliche Fehlerquellen weitesgehend auszuschließen habe ich das ganze Programm auf die Ado-Befehle reduziert und nochmal ausprobiert( siehe nachfolgenden Quelltext): Dabei weise ich den Datenfeldern lediglich die aktuelle Speicherkapazität zu. Doch ich habe immer noch das selbe Problem. Wer kann mir helfen?
<PRE>
begin<BR>
Tablename:='Test';
AdoDataSet:=TAdoDataSet.Create(self);
AdoDataSet.ConnectionString:='Provider=Microsoft.J et.OLEDB.4.0;Data Source='{+Verz.AusVerz}+DBName+';Persist Security Info=False';
AdoDataSet.CommandText:='Select * from '+Tablename;
AdoDataSet.LockType:=ltOptimistic;
AdoDataSet.Open;
for i:=0 to 40000 do begin
Application.ProcessMessages;
AdoDataSet.Append;
for j:=0 to AdoDataSet.Fields.Count-1 do
AdoDataSet.Fields[j].Value:=getressource; { getressource verursacht keinen Speicherverlust !}
AdoDataSet.Post;
end;
AdoDataSet.Close;
AdoDataSet.Free;
end;
</PRE>
Comment