Einzelnen Beitrag anzeigen

Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#84

Re: Record zurücksetzen (löschen)

  Alt 10. Okt 2008, 10:55
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
  Mit Zitat antworten Zitat