Data Persistence

Richard Gaskin ambassador at fourthworld.com
Fri Jul 27 21:26:06 CEST 2018


Sannyasin Brahmanathaswami wrote:

 >   (rough draft code)
 >
 > Local sTempParamArray # may good to save a local,
 >
 > Command saveTempParams
 >
 > 		Put fld "fuelNeed" into  pTempParamArray["fuelNeeded'}
 > 		Put fld "timeToArrival" into  pTempParamArray["timeToArrival""
 > 		# etc.
 > 		Put pTempParamArray into sTempParamArray
 > 		storeTempParams pTempParamArray
 >
 > End saveTempParams
 >
 > command storeTempParams pTempParamArray
 >
 > 	put   specialFolderPath("documents") & "/tempSavedParams" into 
tSavedPath
 > 	put sTempParamArray into url ("binfile:" & tSavedPath)
 >
 > end storeTempParams

A good outline, but missing a key step:  arrays are collections of 
pointers and in their native form are not a contiguous bytestream, so 
attempting to write one to disk directly with yield an empty file.

This is where serialization comes in, collecting all the disparate 
pointer contents and packing them into a bytestream that can be saved or 
transported, using arrayEncode:

command storeTempParams pTempParamArray
   put specialFolderPath("documents") & "/tempSavedParams" into \
      tSavedPath
   put arrayEncode(sTempParamArray) into url ("binfile:" & tSavedPath)
end storeTempParams


And because arrayDecode will throw a fatal error if you attempt to use 
it with anything other than actual LSON data, we can't just check "the 
result" afterward; better to wrap it in a try/catch:

Function getTempSavedParams
   Put specialFolderPath("documents") & "/tempSavedParams" into \
      tSavedPath
   put url ("binfile:" & tSavedPath) into pTempParamArray
   -- Always check I/O for errors:
   if the result is empty then
      return "Error in getTempSavedParams: "& the result for error
    end if
    -- Try as LSON:
    try
      put arrayDecode(pTempParamArray) into pTempParamArray
    catch tErr
      return "Not a valid array file: "& tSavedPath for error
    end try
    --
    return pTempParamArray
end getTempSavedParams


-- 
  Richard Gaskin
  Fourth World Systems
  Software Design and Development for the Desktop, Mobile, and the Web
  ____________________________________________________________________
  Ambassador at FourthWorld.com                http://www.FourthWorld.com



More information about the use-livecode mailing list