>Hello,
>
>I know this probably sounds like a stupid question but here is goes:
>
>I am try to make our component work in FoxPro6. Basically I am try to do memory compression.
>
>I have a string that I want to compress and then place in a byte array to then later on uncompress it back into a string.
>
>This is the code I am try to use...
>
>public gcBigBlob && uncompressed data
>public gcLittleBlob && compressed data (variant)
>
There's no need to make these PUBLIC; the scoping applies to the VFP process, not to an OLE Object. I'd keep them local, to avoid side effects.
>gcBigBlob = "This is the string I wnat to compress"
>gcLittleBlob = ""
>
>&& Set up the compression control:
>gnZip = CREATEOBJECT('XceedSoftware.XceedCompression')
>
>&& Compress the data:
>rslt = gnZip.Compress(m.gcBigBlob, m.gcLittleBlob, .T.)
The problem is here - you're passing by value, rather than by reference. Try:
rslt = gnZip.Compress(@gcBigBlob, gcBigBlob, .t.)
this will get any result passed back into the original variable; otherwise, a copy of the data is passed and thrown away on return.
>MESSAGEBOX (gnZip.GetErrorDescription (rslt))
>
>? m.gcLittleBlob
>? LEN(m.gcLittleBlob)
>
>
>The problem is that gcLittleBlob remains empty and the string is never compressed.
>
>So I guess I need to know how to tell FoxPro that gcLittleBlob is a varian byte array.
>
>I hope my question is clear! if not please let me know and I will try to explain further..
>
>Thank you for your help :)
>
>Jenny Beland
>Technical Support
>Xceed Software Inc.