
Zitat von
Rosenwehr:
Heist das also, das mit der oben genannten Reihenfolge alles i.o. ist?
Wie kann ich mein Programm auf Speicherleck prüfen? In meiner procedure rufe ich am Anfang einer Schleife SetLength(MyRecord,0) dann SetLength(MyRecord,1) auf.
Das Array (mit dem einen Record) wird in einer aufgerufenen Unterprocedure abschließend ausgewertet und der Inhalt auch nicht mehr benötigt. Beim nächsten Schleifeneintritt SetLength(MyRecord,0) dann SetLength(MyRecord,1) usw.
Gibt es eine elegantere Lösung für D2005? Inwiefern werden Ressourcen verschwendet bzw. liegt unsauberer Programmierstil vor?
Hallo,
bei der Abfolge lässt du nach der Bearbeitung den Array mit Länge 1 zurück, obwohl er nicht mehr benötigt wird. Das ist noch kein Speicherleck, aber man könnte nach Gebrauch die Länge wieder auf 0 setzen.
Eine weitere Möglichkeit: Setzen des Records und die Auswertung in eine Prozedur zusammenfassen und den record als lokale Variable definieren, und zwar als stinknormalen Record. Der wird bei Eintritt automatisch genullt und beim Verlassen aufgeräumt. Ist halt bloss normales Pascal und nicht so geil wie dynamische Arrays und Records mit Prozeduren.
Gruss Reinhard