Saving multiple pieces of info to a RandomAccessFile

mattdavis523

Member
Licensed User
Longtime User
I'm trying to save multiple objects, a list of objects, and the content of 2 text boxes, to a RandomAccessFile, but when I go to retrive the data I am getting errors. Here is my saving and loading sub's.

What am I doing wrong.

B4X:
Sub Build_Stats_dat
   Dim raf As RandomAccessFile
   If File.Exists(File.Combine(File.DirRootExternal,"Volleyball/data"), "Last_Game") = False Then
   File.MakeDir(File.DirRootExternal,"Volleyball/data")
   End If
   raf.initialize(File.Combine(File.DirRootExternal,"Volleyball/data"), "Last_Game", False)
   raf.writeobject(players, False, 0)
   raf.writeobject(GameScores.Text, False, raf.CurrentPosition)
   raf.writeobject(Opponent.Text, False, raf.CurrentPosition)
End Sub
Sub Load_Stats
   If File.Exists(File.Combine(File.DirRootExternal,"Volleyball/data"), "Last_Game") = True Then
   Dim raf As RandomAccessFile
   raf.initialize(File.Combine(File.DirRootExternal,"Volleyball/data"), "Last_Game", False)
   players = raf.readobject(0)
   GameScores.Text = raf.ReadObject(1)
   Opponent.Text = raf.ReadObject (2)
   CreateListOfPlayers(players.Size, False)
   End If
End Sub
 

kickaha

Well-Known Member
Licensed User
Longtime User
First, you are not closing the file. Second, you are not using the correct position on the read.

Try this (untested)
B4X:
Sub Build_Stats_dat
    Dim raf As RandomAccessFile
    If File.Exists(File.Combine(File.DirRootExternal,"Volleyball/data"), "Last_Game") = False Then
        File.MakeDir(File.DirRootExternal,"Volleyball/data")   
    End If   
    raf.initialize(File.Combine(File.DirRootExternal,"Volleyball/data"), "Last_Game", False)    
    raf.writeobject(players, False, raf.CurrentPosition)    
    raf.writeobject(GameScores.Text, False, raf.CurrentPosition)    
    raf.writeobject(Opponent.Text, False, raf.CurrentPosition)
    raf.Close
End Sub
Sub Load_Stats    
    If File.Exists(File.Combine(File.DirRootExternal,"Volleyball/data"), "Last_Game") = True Then    
        Dim raf As RandomAccessFile    
        raf.initialize(File.Combine(File.DirRootExternal,"Volleyball/data"), "Last_Game", False)    
        players = raf.readobject(raf.CurrentPosition)    
        GameScores.Text = raf.ReadObject(raf.CurrentPosition)    
        Opponent.Text = raf.ReadObject (raf.CurrentPosition)
        raf.Close    
        CreateListOfPlayers(players.Size, False)    
    End If
End Sub
 
Upvote 0
Top