Problems with arrayencode/decode
Peter Haworth
pete at lcsql.com
Wed Jan 2 23:40:35 EST 2013
Thanks Phil, I'll give that a try. I was using both base64 and array
encodings but I was stacking them together, like:
base64Encode(arrayEncode(tArray))
Seems like that should work but maybe its troublesome.
Pete
lcSQL Software <http://www.lcsql.com>
On Wed, Jan 2, 2013 at 8:33 PM, Phil Davis <revdev at pdslabs.net> wrote:
> 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<http://lists.runrev.com/mailman/listinfo/use-livecode>
>>
>>
> --
> Phil Davis
>
>
> ______________________________**_________________
> 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<http://lists.runrev.com/mailman/listinfo/use-livecode>
>
More information about the use-livecode
mailing list