>Hi,
>I am working with different Latin American countries and they send me every month different .dbf files with data. Some of these countries use BRO Plus as .dbf editor. I have one field called quantity and it's binary! I tried with the CtoBin() function in fox, but it didn't work. If I use the BRO's command BIN2L works! If I do the following example in fox works also:
>aa=25
>bb=BinToC(aa)
>?CtoBin(bb) &&Returns 25.
>
>In this example the convertions works perfectly!
>
>I think that I have the problem with the bits. I think they convert data with 16bits and fox 8.0 uses 32bits.
>Anyway, does anybody know how can I convert this binary field into an integer. (consider that this binary data was generated with a program called BRO and the command used was L2BIN()
>
>Thanks!
Assuming length of field matches the size of integer (1,2,4 - 8,16,32 bits) :
function Str2Int
lparameters tcStr
local lnValue
lnValue = 0
for ix = 1 to len(tcStr)
lnValue = lnValue + asc(substr(tcStr,ix)) * 256^(ix-1)
endfor
return lnValue
PS: RtlMoveMem should be faster. If data is huge use RtlMoveMem :
DECLARE RtlMoveMemory IN WIN32API ;
INTEGER @DestNumeric, ;
STRING @pVoidSource, ;
INTEGER nLength
function Str2Int
lparameters tcStr
local lnValue
lnValue=0
RtlMoveMemory(@lnValue, tcStr, len(tcStr))
return lnValue
Cetin