Einzelnen Beitrag anzeigen

Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#4
  Alt 4. Jun 2003, 21:59
Zitat von Jens Schumann:
Hallo,
dein Source läßt vermuten, dass Du anz vor der Schleife nicht auf
einen definierten Anfangswert setzt (Stichwort: Initialisieren).
Schreib mal vor die Schleife anz:=0;
Lokale Variablen werden auf dem Stack angelegt. Wenn Du anz nicht initialisierst kann jeder beliebige Wert in anz stehen. Nämlich genau der Wert, den irgendein anderer Programmteil an der Speicherstelle hinterlassen hat.
"anz" wird vor der Schleife auf 0 gesetzt, hab ich nur beim kopieren vergessen .

Zitat von Christian Seehase:
Moin X-Dragon,

ausserdem solltest Du das Array mit einer sinnvollen Grösse vor der Schleife dimensionieren, und erst wenn diese nicht ausreicht um eine sinnvolle Anzahl (i.d.R. wohl nicht 1).
Dadurch entlastest Du die Speicherverwaltung erheblich, die sonst bei jeder Vergrösserung des Arrays dieses meist erst mal umkopieren muss, was wiederum erheblich auf die Performance drücken kann.

Da Du die maximal mögliche Grösse kennst (MeineObjektListe) kannst Du das Array auch gleich auf diesen Wert dimensionieren.
Achso danke, dann werd ich wohl doch besser vorher die richtig Anzahl feststellen. MeineObjektListe kann durchaus mehrere hundert Einträge haben, aber normal werden dort nicht mehr als 10 davon benötigt, deshalb die if-Abfrage (habs stark vereinfacht damit es übersichtlicher ist).
  Mit Zitat antworten Zitat