Useless Hacker is correct, you'll need to save and load the properties of the sprite and not the sprite itself. Write(f, Tile[i].Whatever); Write(f, Tile[i].Whatever2); etc.

You'll also want to Free the tiles in your loading code before you use TTile.Create() on them. Otherwise the tiles that you had before will still exist in memory but with nothing to point at them.