Zum einen würde ich FreeAndNil(FileStream) aufrufen, wenn du später FileStream = NIL prüfst. Meiner Erfahrung nach ist nicht 100% garantiert, das Free auch das Objekt auf NIL setzt.
Dann wie schon vorgeschlagen, die Verwendung von globalen Variablen eingrenzen.
Eine Möglichkeit wäre, die procedure StopRec in eine function StopRec zu wandeln (wie schon vorgeschlagen), die dann den Zeiger zurückgibt
Delphi-Quellcode:
function TForm1.StopRec : TFileStream;
[...]
Result := FileStream;
// und in StatusProc
if (FileStream = nil) and (RecordStatus=True) then
FileStream := Form1.StopRec;
StopRec ist eine Methode der Klasse TForm1
StatusProc ist eine freie Procedure
FileStream eine globale Variable
Ich muss ehrlich zugeben, das ich immer noch etwas am stochern bin, weil ich doch nicht so gut bin, da 100% durchzusteigen.
€: Wenn mich nicht alles täuscht, würde der Methode "StopRec" eher ein Name wie "OpenFileStream" stehen. Zumindest stolper ich immer über den Namen, der nicht zur Aufgabe passt.