Die ObjectList hingegen enthält alle instanziierten Klassen, somit also alle Datensätze der Tabelle?!
Jaein, es kommt drauf an, wie Du Sie füllst.
- Wird das nich bei größeren Projekten extrem Speicherfressend? Oder wird da immer nur ein Teil der Daten geladen, sozusagen +- 10 Datensätze um den angefragten herum?
Der Speicherverbauch ist bis jetzt immer im Rahmen geblieben, egal wieviele Datensätze ich geladen hatte in der TObjectList.
- Wenn man die Klasse instanziiert, dann muss sie ja einer Variable zugeordnet werden, ist da dann der Ausdruck
Delphi-Quellcode:
var obj: TKlasse;
begin
New(obj);
...
end;
der richtige Ansatzpunkt?
Du nimmst den Quelltext aus meinen obenstehenden Link. Und so fülle ich die TObjectList :
Delphi-Quellcode:
procedure TDM_Main.SetAnsprechpartnerListe(Kundennr :
string);
begin
if AnsprechpartnerListe.Count > 0
then
AnsprechpartnerListe.Clear;
with UniQuery_Ansprechpartner
do
begin
SQL.Text := '
SELECT * FROM Ansprechpartner WHERE Kundennr = :KundenID;';
ParamByName('
KundenID').AsString := Kundennr;
Open;
while not Eof
do
begin
AnsprechpartnerListe.Add(TAnsprechpartner.Create);
with TAnsprechpartner(AnsprechpartnerListe.Last)
do
begin
KundenNr := FieldByName('
Kundennr').AsString;
Vorname := FieldByName('
Vorname').AsString;
Nachname := FieldByName('
Nachname').AsString;
Telefon1 := FieldByName('
Telefon1').AsString;
Telefon2 := FieldByName('
Telefon2').AsString;
Fax := FieldByName('
Fax').AsString;
Mobil := FieldByName('
Mobil').AsString;
EMail := FieldByName('
EMail').AsString;
end;
Next;
end;
Close;
end;
end;
- Kann man bei Erzeugung einer neuen Klasse selbige auch automatisch an die ObjectList anhängen? Passiert dies bei deinem Bsp. (dein Link) über das NotifyEvent?
Das NotifyEvent nutze ich dazu, wenn Änderungen in der TObjectList gemacht wurden diese in die Datenbank zu übertragen.