Wozu die ganzen Try-Except-Blöcke, wenn sie doch leer sind?
Insbesondere hier:
Delphi-Quellcode:
Procedure Free_slLoad;
Begin
Try
FreeAndNil(slLoad);
Except
End;
End;
Und warum das Auslagern in eine eigene Prozedur? Das suggeriert, dass hier noch mehr passiert, tut es aber nicht. Davon abgesehen bitte mal dies zu FreeAndNil lesen:
http://www.nickhodges.com/post/Using-FreeAndNil.aspx