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