General information
Category:
Windows API functions
>>>>Peter,
>>>>
>>>>Thanks a lot. Here is what I found in the header file.
>>>>
>>>>typedef struct tagDPIDate
>>>>{
>>>> short jour;
>>>> short mois;
>>>> short annee;
>>>>} DPIDate, FAR * LPDPIDate;
>>>>
>>>>I removed the text of your message in this answer because I'm using the offline reader and it's plain memo...
>>>>
>>>>José
>>>
>>>The length of the string should be 6.
>>>
>>>After the dll procedure returns you can unpack it by:
>>>lnJour = UnpackShort(substr(m.lcStr, 1, 2))
>>>lnMois = UnpackShort(substr(m.lcStr, 3, 2))
>>>lnAnnee = UnpackShort(substr(m.lcStr, 5, 2))
>>>
>>>** Here is a VFP procedure that will unpack the datatype short:
>>>function UnpackShort
>>> lparameters lcStr
>>> assert len(m.lcStr) = 2
>>> local lnLeft, lnRight
>>> lnLeft = asc(left(m.lcStr, 1))
>>> lnRight = asc(right(m.lcStr, 1))
>>> return iif(bitand(lnRight, 0x80) = 0x80), -1, 1) * bitor(lnLeft, bitand(lnRight, 0x7f))
>>
>>I understand why you use the BITAND in the IIF. But I really don't get the part after the "*" sign. IMHO, you can't obtain the correct value using this formula.
>>
>>I would go for the simple one:
>>return lnRight * 256 + lnLeft
>>
>>Of course, you can add the part for the sign, but I don't see how you can have negative values for day, month or year.
>>
>
>I just wrote this routine as a general purpose 'short unpacker'. Shorts are signed, so I thought I would include that detail to make the routine more exact. Sometimes I get caught up in the details though! :)
>Peter
Yes, I understood what you do for the sign. But I didn't understand the BITOR part. And it doesn't work. Or am I missing something?
Vlad
Previous
Next
Reply
View the map of this thread
View the map of this thread starting from this message only
View all messages of this thread
View all messages of this thread starting from this message only