ich habe ein Programm, dass mittlerweile ordentlich durch läuft und weitgehend das macht, was es soll.

Nun wollte ich mit Heap Trace auf die Suche nach Speicherlecks gehen und habe also in den Projekt-Einstellungen unter den Debugger-Optionen einfach "Heaptrc-Unit verwenden (-gh)" angehakt.
Das Ergebnis ist, jetzt erhalte ich eine Exception und lande im Assembler-Fenster (was leider nicht wirklich hilft. Der Code, bei dem das passiert ist der hier:
Code: Alles auswählen
begin
ResultFilename := PD.BMSCResultsPath + 'RFC-' + IntToStr(PD.NBins_RFC) + '_' +
Bolt_Name + '.txt';
AssignFile(RFC_Output_file,ResultFileName);
// in case of 1st DLC a new file is created; all other results are appended
if (IDLC=0) then
Rewrite(RFC_Output_file)
else
Append(RFC_Output_file);
FATEntry := TFAtEntry.Create;
FATEntry := FatigueList[IDLC];
.......
das ist aus einer Routine, die bei jedem Durchlauf das Ergebnis an ein Ergebnisfile anhängen soll - beim ersten Durchlauf (IDLC = 0) soll das File neu angelegt werden. Das passiert auch. Aber wenn -gh gesetzt ist, wird die Exception (wohl beim Append) geworfen - das Resultfile enthält die erste Lösung, die folgende dann nicht mehr.
Was passiert da? Was mache ich falsch? Wie bekomme ich bessere Ergebnisse (meine Erinnerung sagt mir, dass Heap-Trace mir eigentlich sagt, welcher Speicher nicht frei gegeben wird und das nach Ende des Programms). Gibt es eine bessere Art und Weise, Speicherlecks zu erkennen?
Ein bisschen ratlos,
Photor