Hallo...
ich habe Probleme mit einer TObjectlist, in der ich Ergebniswerte mit Selektoren abspeichere. In der Liste können schon mal mehrere zehntausend Werte auflaufen. Ab einer bestimmten Menge gibt es ein "Out of Memory"-Fehler und das Programm stürzt ab.
Was für mich aber unverständlich ist, wenn ich dieselben Daten in ein Stream packe und auf der Festplatte abspeichere, sind da nur wenige Kilobyte zu finden. Wieso bläht sich das so im
RAM auf?
Gibt es Möglichkeiten, das zu reduzieren?
Meine prinzipielle Programmstruktur:
Delphi-Quellcode:
TWert = class
private
FWert : Double;
FSelektor1: Integer;
FSelektor2: string;
public
constructor Create(AWert: Double; ASelektor1: Integer; ASelektor2: string);
property Wert: Double read FWert write FWert;
property Selektor1: Integer read FSelektor1 write FSelektor1;
property Selektor2: string read FSelektor2 write FSelektor2;
end;
TWerteliste = class(TObjectList<TWert>)
private
public
procedure Add(AWert: Double; ASelektor1: Integer; ASelektor2: string);
function FindWert(ASelektor1: Integer; ASelektor2: string): Double;
end;
P.S.:
Um Fragen vorzubeugen: Ich nutze keine Datenbank, weil für mein Projekt schon die schnelleren Memorydatenbanken zu langsam sind.
Achtung: Bin kein Informatiker sondern komme vom Bau.