It does work (simonuk74), and that is the way to do it (Codger)
Here is the complete code - with a bonus that the code will redim the array on loading it to make it the correct size
sync on
sync rate 0
TYPE PlayerFile
name AS STRING
lastplayed AS INTEGER
ENDTYPE
dim file_players(20) as PlayerFile
file_players(1).name = "SirReal"
file_players(1).lastplayed = 15524232
file_players(2).name = "SirReal2"
file_players(2).lastplayed = 155256
file_players(3).name = "SirReal3"
file_players(3).lastplayed = 15525
file_players(4).name = "SirReal4"
file_players(4).lastplayed = 155234
file_players(5).name = "SirReal5"
file_players(5).lastplayed = 15523
SavePlayerFile("data/players.dat")
do
set cursor 0,0
for i = 1 to 5
print file_players(i).name , " " , file_players(i).lastplayed
next i
sync
loop
function SavePlayerFile(Filename as string)
if file exist(Filename) then delete file Filename
open to write 1, Filename
write long 1, array count(file_players())
for i=0 to array count(file_players())
write string 1, file_players(i).name
write long 1, file_players(i).lastplayed
next i
close file 1
endfunction
function LoadPlayersFile(Filename as string)
local ArraySize as integer
open to read 1, Filename
read long 1, ArraySize
if array count(file_players()) <> ArraySize
undim file_players()
global dim file_players(ArraySize)
endif
for i=0 to array count(file_players())
read string 1, file_players(i).name
read long 1, file_players(i).lastplayed
next i
close file 1
endfunction