Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
How to copy a blob field into an array of bytes
Message
 
 
To
22/03/2011 17:45:01
Gary Foster
Pointsource Consulting LLC
Chanhassen, Minnesota, United States
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Environment versions
Visual FoxPro:
VFP 9 SP1
OS:
Windows 7
Network:
Windows 2003 Server
Database:
Visual FoxPro
Application:
Desktop
Miscellaneous
Thread ID:
01504022
Message ID:
01504602
Views:
48
>Where do you get the error? In the substr() loop?
>
>Also, have you tried assigning the blob to a variable and referencing the var in the substr()?
>
>Gary

Gary,

If I try assigning BlobData to a local variable, I get an error saying that the operation is not valid for a General field.

So BlobData is a general field, not a blob.

I assume that the blob data is in that general field. How do I get it out into a byte array?

Thanks,
Jim

>
>>>>>>>>>How to copy the contents of a blob field in a table into an array of bytes.
>>>>>>>>>
>>>>>>>>
>>>>>>>>VFP doesn't have byte data type. Please clarify.
>>>>>>>
>>>>>>>It does *sortof*. I've defined arrays as byte (DIME aTest[100] as BYTE, aTest = 'X') to pass to COM servers and they are recognized as VT_UI1. TYPE() in VFP returns 'N'. I guess it depends on what the array is to be used for.
>>>>>>
>>>>>>
>>>>>>Sergey & Gary,
>>>>>>
>>>>>>Thanks for responding to my posting.
>>>>>>
>>>>>>Actually, my purpose has to do with COM. I'm developing a COM server. The client will pass a reference (pointer) to a byte array to the COM sever. The COM server will transfer the data from the blob field into the byte array.
>>>>>>
>>>>>>So, how, in my VFP COM server can I transfer the data from the blob into the byte array?
>>>>>>
>>>>>>Looks like VFP Dimension statement knows about the Byte data type, by the CAST function does not.
>>>>>>
>>>>>>Thanks,
>>>>>>Jim
>>>>>
>>>>>
>>>>>Does something like the following work?
>>>>>
>>>>>DIME MyPassedArray[LEN(MyBlob)]
>>>>>
>>>>>FOR nInc = 1 TO LEN(MyBlob)
>>>>> MyPassedArray[nInc]=SUBSTR(MyBlob,nInc,1)
>>>>>ENDFOR
>>>>
>>>>Gary,
>>>>I just got to try your suggestion. The blob field is part of a view. When I try the code you suggest:
>>>>
>>>> FOR nIx = 1 TO nBlobSize
>>>> nBlobData[nIx] = SUBSTR(BlobData, nIx, 1)
>>>> ENDFOR
>>>>
>>>>Where, BlobData is the name of the blob field in the view. I get the following error message:
>>>>
>>>> Function argument value, type, or count is invalid
>>>>
>>>>I get the sam error if I use vMyView.BlobData as the first argument.
>>>>Again, thanks for your suggestions.
>>>>Jim
>>>
>>>What is the type of the BlobData field?
>>
>>Naomi,
>>It is a blob in the original database from which I create the view. BlobData is the name of the field in the VFP view. VARTYPE(BlobData) returns "G". Does that mean that it is no longer a blob?
>>In any case, I am trying to get the binary data out of that blob field.
>>In the view, I just changed the field to say CAST(myBlobField AS BLOB) AS BlobData.But, VARTYPE(BlobData) still returns "G:
>>
>>The original database is Firebird.I use a VFP parametrized view to get a specific record in the table, and now want to get the blob field in that record.
>>
>>Hmmm
>>
>>Jim
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform