Problems with arrayencode/decode
Phil Davis
revdev at pdslabs.net
Wed Jan 2 23:33:51 EST 2013
Hi Pete,
Here's what I do on a regular basis (with names changed to protect the
innocent - Sgt. Friday would be pleased). I use "get url" instead of
open/read/close" but it seems to me either should work. I don't know if
the 'waits' in my code make much difference:
put arrayFromFile(tMyFilePath) into tMyArray
put "new stuff" into tMyArray["buckets"][15]
SaveArrayToFile tMyArray, tMyFilePath
command SaveArrayToFile pArray, pFilePath
if (the keys of pArray = empty) or (pFilePath = empty) then
reportError "Bad param"
exit to top
end if
put base64Encode(arrayEncode(pArray)) into tFileData
put tFileData into url ("file:" & pFilePath)
if the result <> empty then -- an error occurred
reportError "Error while saving file"
exit to top
end if
end SaveArrayToFile
function ArrayFromFile pFilePath
if there is a file pFilePath
then -- unpack it and return it
get url ("file:" & pFilePath)
if the result = empty -- we got the file
then -- decode & return the array
put base64Decode(it) into tArrayData
if the result <> empty then
reportError "Could not base64Decode"
exit to top
end if
wait 0 seconds -- just for fun
put arrayDecode(tArrayData) into tArrayA
if the result <> empty then
reportError "Could not arrayDecode"
exit to top
end if
wait 0 seconds -- just for fun
return tArrayA
else -- exit with error
reportError kMsgCouldNotReadArrayFile
exit to top
end if
else -- no file was found
reportError "file not found:" && pFilePath
return empty
end if
end ArrayFromFile
HTH -
Phil Davis
On 1/2/13 6:55 PM, Peter Haworth wrote:
> I'm writing an arrayencoded array to a disk file using write to file. When
> I read the file back into memory with read from file until EOF and then try
> to arraydecode it, I get a runtime error "arraydecode:failue". In debug, I
> can see data appear in it right after the read.
>
> I've tried all possible combinations of reading/writing binary and also
> base64encoding the arrayencoded array. Same result every time.
>
> The only thing I think might be a problem is that after reading the file,
> the result is set to "eof". It's a little hard to tell from the
> dictionary whether I should expect that when I tell the read to read until
> eof. If it is an indication that the read encountered eof before
> completing, I can see that the arraydecode would fail but I'm not sure why
> that would happen.
>
> Any ideas?
>
> Pete
> lcSQL Software <http://www.lcsql.com>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
--
Phil Davis
More information about the use-livecode
mailing list