your use of stripping the returns from base64Encode is clever. I thought of that but wasn't sure how much one could mess with the format once encoded.

However URLEncoding is great for one-line-packing HTML snippets in scripts, which otherwise would require extra steps with base64Encode.

In my suggestions of encoding, I'm assuming moderate snippets of text rather than volumes are being moved this way, and the extra processing needed is minimal and invisible.

It's fast enough that I'm using packing/unpacking techniques like this to create a list on-the-fly and set the text of a popup button on mousedown, and it shows up in the popup menu.



Note that the URLEncoded suggested by Stephen is unnecessary and will be an unnecessary overhead (the cr replaced by empty is faster and takes less memory to convert the base64encoded string to one line).

Regards,

AF



function test1
  local a,b
  repeat with i=1 to the num of lines in fld 1
    put line i of fld 1 into a[i]
  end repeat
  put imedarray_pack(a) into tPacked
put imedarray_unpack_1(tPacked) into b -- see the imedarray_unpack_1() and imedarray_unpack_2() for clue
  return imedarray_equal(a,b)
end test1

function test2
  local a,b
  repeat with i=1 to the num of lines in fld 1
    put line i of fld 1 into a[i]
  end repeat
  put imedarray_pack(a) into tPacked
put imedarray_unpack_2(tPacked) into b -- see the imedarray_unpack1() and imedarray_unpack2() for clue
  return imedarray_equal(a,b)
end test2


function imedArray_pack pArray -- convert an array to a cr-delimited string with <key>tab<base64encoding>
  local r
  repeat for each line k in the keys of pArray
    get base64encode(pArray[k])
    replace cr with empty in it
    put k &tab& it &cr after r
  end repeat
  return r
end imedArray_pack

function imedArray_unpack_1 pPackedData -- convert back a packed string to an array, version 1
  local a
  set the itemdel to tab
  repeat with i=1 to the num of lines in pPackedData
    put line i of pPackedData into tLine
    put base64Decode(item 2 of tLine) into a[item 1 of tLine]
  end repeat
  return a
end imedArray_unpack_1

function imedArray_unpack_2 pPackedData -- convert back a packed string to an array, version 2 (DONT RETURN CORRECT RESULT: BUG IN THE REV ENGINE?)
  local a
  set the itemdel to tab
  repeat for each line tLine in pPackedData
    put base64Decode(item 2 of tLine) into a[item 1 of tLine]
  end repeat
  return a
end imedArray_unpack_2

function imedArray_equal a,b,pCaseSensitive -- test if two arrays have the same keys and same content
  put the keys of a into tkeys
if the number of lines in tKeys is not the num of lines in the keys of b then return false
  set the caseSensitive to pCaseSensitive is true
  repeat for each line tk in tKeys
    if a[tk] is not b[tk] then return false
  end repeat
  return true
end imedArray_equal



Date: Mon, 22 May 2006 20:50:13 -0700
From: Stephen Barncard <[EMAIL PROTECTED]>
Subject: Re: passing parameters in a send call.
...

I turn the array into a list with lines like this. The secret is to
encode the data to fit on one line per record, using tab as a delim.

keyName  <tab> <data>

URLEncoded data looks like this on a line:
"--put+the+scriptsOfFocus+of+this+stack+into+tStackList%"

This line was base64Encoded, then URLEncoded on to one line:
"cCnB1dCBsaWJTUUJfcmV0dXJuUmVsU3RhY2tBZGRyZXNzZXMoInRydWUiKSBpbnRvIHRTdGFj%0D%0"

using this code:
put URLEncode(base64Encode(fld "disclosure")) into fld "output2"

...

sqb

_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


--
stephen barncard
s a n  f r a n c i s c o
- - -  - - - - - - - - -
_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to