tutorials:first-steps:save-load
Save/load static variables
This tutorial cover how to save/load static parameters in your projects.
Create project
In a newRGG
project, add a new file called “paramfile”. (in the file explorer click “new>file>” enter paramfile - no extensions).
In the Model.rgg
file copy:
import java.io.Writer; import java.io.Reader; import de.grogra.pf.ui.registry.RunAfterSave; import de.grogra.pf.ui.registry.RunAfterLoad; import de.grogra.pf.registry.RegistryContext; global float myFloat = 1f; public static int myInt = 3; public static String myString = "initValue"; public class LoadParam implements RunAfterLoad{ public void load(RegistryContext ctx){ Object f = getFileFromProject("paramfile"); Reader r = ctx.getRegistry().getFileSystem().getReader(f); char[] buf = new char[2048]; r.read(buf); String alltext = new String (buf); String[] lines = alltext.split("\n"); for (String line : lines){ String[] param = line.split("="); if ("myInt".contentEquals(param[0])) { myInt = Integer.valueOf(param[1]); } else if ("myString".contentEquals(param[0])){ myString = param[1]; } } } } public class SaveParam implements RunAfterSave{ public void save(RegistryContext ctx){ Object f = getFileFromProject("paramfile"); Writer w = ctx.getRegistry().getFileSystem().getWriter(f, false); w.append("myInt="+myInt+"\n"); w.append("myString="+myString+"\n"); w.close(); } } protected void init () [ Axiom ==> ; ] public void r(){ myInt ++; myString = "anotherValue"; myFloat++; } public void p () { println(myInt); println(myString); println(myFloat); }
Note:
- The variable
myFloat
is not included in thesave
andload
methods. As aglobal
it is automatically included in GroIMP serialization. - Any other serialization methods can be used. Here we “simply” write varName=varValue as string in a text file. But, any other approach would work (e.g. write in csv, …). The file do not have to be within the project (as
paramfile
is). - To reset the three variables to their initial values, the project needs to be either
recompiled
orreset
.
You can run the r()
command to change the value of the variables. Save the project, close it, re open it, and run p()
to print their current value.
tutorials/first-steps/save-load.txt · Last modified: 2025/03/25 12:00 by gaetan