Was macht freeandnil?
Es geht davon aus das der Pointer ein Object ist.....
Du hast aber einen record.....
Delphi-Quellcode:
procedure FreeAndNil(var Obj);
var
Temp: TObject;
begin
Temp := TObject(Obj);
Pointer(Obj) := nil;
Temp.Free; // Hier knallt es bei Dir
end;
Und bitte die Source hier mit rein in Delphi Tags
Jap. Außerdem wird vorher dem Zeiger Nil zugewiesen.
Freigeben musst du sehr wohl, entweder via Dispose oder FreeMem.
Passend zum Thema hier ein Tutorial