Guten Tag, ich bin neu hier und hoffe ich habe jetzt nichts falsch platziert. Folgende Fragestellung: Ich möchte Daten persistent speichern und das nach jedem neuen Eintrag um Datenverlust zu vermeiden. Dabei wird AddEntry relativ häufig aufgerufen.
Bisher nutze ich dafür TClientDataSet, habe dabei aber das Problem, dass durch die wachsende Datenmenge der Vorgang irgendwann recht langsam ist.
Ich hatte schon TMemtable als Ersatz probiert, dies war aber im Vergleich noch langsamer. Nun also die Frage, gibt es Wege, dass ganze perfomanter zu gestalten?
Code:
procedure TDataSetMap.AddEntry(const AUId: string; const ATarget: Integer);
var EntryExists: boolean;
begin
EntryExists := GoToUId(AUId, true);
if not EntryExists then begin
EntryExists := GoToUId(AUId, false);
if not EntryExists then begin
FTmpClientDataSet.Append;
FTmpClientDataSet.FieldByName('UId').AsString := AUId;
FTmpClientDataSet.FieldByName('Target').AsInteger := ATarget;
FTmpClientDataSet.Post;
FTmpClientDataSet.SaveToFile(FTempPath);
end;
end;
end;