That won't work because when you do
[pascal]write(f,Tile[i]);[/pascal]
it is just writing a pointer to the class into the file.
So, when you load it you are loading pointers which (probably) don't point to anything anymore, hence the access violation.

You will need to create a method to save the values in the tile class to a file. Unfortunately, this will not be easy since TImageSprite doesn't have any method for saving either, so you would have to save that data also. When you want to load the map you will then have to create new tiles and read in the saved values to them.