Also.....ich kenn zwar das Problem nicht. Aber 3 Dinge sind mir aufgefallen.
1. Diese Codezeile
Code:
TempStr := Copy(TempStr, 1, Length(TempStr) - (Length(TempStr) - NextPos('<', TempStr, 1) + 1));
der String wird die befüllt (length(tempstr)-length(tempstr)) = 0 - nochwas ergibt negativen wert...!!!
2. sSource wird immer wieder neu erzeugt....-> ineffektiv
Lieber am Programmstart create, am ende free und hier immer nur ssource.clear;
3.Datei
Assign, Append und Close würd ich ebenfalls außerhalb machen. Das frist auch ewig zeit.
Obwohl ich auch einiges mit TStrings/TStringlist mach, hab ich bisher nix feststellen können, das da irgendwelche Speicherleaks auftreten.
Propier mal ob du vielleicht mit dem Programm "Memproof" was rausfindest.
http://www.automatedga.com (memproof)