[Closed] How to save spinner values
Hi everyone,
I try to write a macroscript that adds some modifiers with random values. This random values will be between min. & max. values that user entered on the rollout. And there is my problem : how can I save/load that limit values to a file ?
You can use a variety of functions. Here’s a quick example of one I did. It’s very basic with no error handling, but I’ve yet to come up with any issues with it:
Create a file first:
fn createIni =
(
iniFile = ((maxFilepath) + “file.txt”)
fileS = createFile iniFile
return fileS
)
then you can write values to it by doing this:
print output to: fileS
close fileS
the “output” value must be converted to a string first, by using the “as string” function:
output = output as string
Um… hope this helps! I’m by no means a great scripter, I just nut out stuff as the work requires it!
EDIT: Make sure you CLOSE the file afterwards!
Hi,
I prefer to use setINISetting and getINISetting in these cases. is saves you the need to create/open/close the file and parse it. it works very fast and needs far less checks to make sure you don’t get an error.
check out this example:
try(destroyDialog roSaveSettings)catch()
rollout roSaveSettings "Save Settings Test"
(
-- Define a local variable for the INI file name.
-- This way, if there's a need to change the name or directory
-- later, you only need to change it here.
local INIFilename = getDir #scripts + "\ est.ini"
-- the user interface:
spinner spMin "Min.: " range:[0,100,0] type:#integer
spinner spMax "Max.: " range:[0,100,0] type:#integer
-- This function will save the settings to the INI file.
-- We use the INIFilename varaible defined earlier as the file name.
fn saveSettings =
(
-- The setINISetting function saves a setting in the format for windows INI files.
-- The first argument is the file name (if this file doesn't exist, setINISetting will create it).
-- The second argument is the category (it appears in the file in square brackets [])
-- The third and forth argument are the key=value set. note that the value has to be a string.
setINISetting INIFilename "Range" "Min" (spMin.value as string)
setINISetting INIFilename "Range" "Max" (spMax.value as string)
)
fn loadSettings =
(
-- The getINISetting function is similar to setINISetting when it comes to argument
-- except, of course, for the lack of "value" (the forth argument).
-- It return the value as a string. If the value or the file does not exist, it returns an empty string.
-- Use a try()catch() pair to make sure you don't get an error if someone edited the value manually,
-- and the value cannot be converted to the right type (in this case an integer).
try(spMin.value = (getINISetting INIFilename "Range" "Min") as integer)catch()
try(spMax.value = (getINISetting INIFilename "Range" "Max") as integer)catch()
)
-- Load the settings when the rollout is opened.
on roSaveSettings open do loadSettings()
-- Save the settings when the rollout is closed.
on roSaveSettings close do saveSettings()
)
createDialog roSaveSettings
cheers,
o
Yep… that’s a lot nicer! Thanks ofer_z! Goes to show how much time I have to research these things!
I didn’t know you could do this in max. Thanks ofer_z, this will save me a lot of time. vbmenu_register(“postmenu_2068280”, true);