Ошибка в том, что когда записей в хранище нет (id=1), то ты создаешь в хранилище только 2 ячейки для хранения информации, в то время как реально обращаешься к чтению/записи аж к 7 ячейкам.
Так что тебе нужно переделать всего одну строку в процедуре SaveProgress:
if id=1 then begin for i:=1 to 7 do id:=AddRecordStoreEntry(rs,'0'); end;
ну и добавить переменную i типа
integer в объявление переменных.
А загрузку прогресса тоже можно немного переделать, там у тебя стоит пауза зачем-то (delay(1000)), хотя логичнее было бы написать так:
if id = 1 then SaveProgress;
else
begin
load:=true;
zvezda:=....
....