Und was, wenn du
FreeAndNIl aufrufst? Für direkt da nach mal eine Schreib- oder Leseaktion mit der Streamvariable aus. Wenn es da kracht, dann wurde die Datei geschlossen und sie wird wo anders im Programm noch mal geöffnet. Schließ sie aber mit FreeAndnIl, damit der Zeiger auch ungültig wird.