>typedef struct _INITDATA >{ > DWORD dwSize; > DWORD dwVersionMajor; > DWORD dwVersionMinor; > DWORD dwVersionBuild; > DWORD dwOptions; > DWORD dwReserved1; > DWORD dwReserved2; > char szDescription[MAXDESCRIPTIONLENGTH+1]; > >} INITDATA, FAR* LPINITDATA; >>
>chr(157)+chr(0)+chr(0)+chr(0)+replicate(chr(0), 153) >chr(0)+chr(157)+chr(0)+chr(0)+replicate(chr(0), 153) >chr(0)+chr(0)+chr(157)+chr(0)+replicate(chr(0), 153) >chr(0)+chr(0)+chr(0)+chr(157)+replicate(chr(0), 153) >>Or chr(156) and 152 replicated chr(0)'s or chr(32)'s.
* ConvertAPI.prg 08-Oct-97 * these functions convert to/from internal binary storage function ToWord( pnNumber ) local lnMSB, lnLSB lnMSB = int( pnNumber / 256 ) && most significant byte lnLSB = pnNumber % 256 && least significant byte return chr( lnLSB ) + chr( lnMSB ) function ToLong( pnNumber ) local lnMSW, lnLSW lnMSW = int( pnNumber / 65536 ) && most significant word lnLSW = pnNumber % 65536 && least significant word return ToWord( lnLSW ) + ToWord( lnMSW ) function FromWord( pcBuffer ) return asc( substr( pcBuffer, 2, 1 ) ) * 256 + asc( left( pcBuffer, 1 ) ) function FromLong( pcBuffer ) local lnNegative if ( bitand( 0x80, asc( substr( pcBuffer, 3, 1 ) ) ) = 0x80 ) lnNegative = -1 pcBuffer = left( pcBuffer, 2 ) + chr( bitand( asc( substr( pcBuffer, 3, 1 ) ), 0x7f ) ) + right( pcBuffer, 1 ) else lnNegative = 1 endif return lnNegative * FromWord( substr( pcBuffer, 3, 2 ) ) * 65536 + FromWord( left( pcBuffer, 2 ) )Then you'd simply:
szDescription = replicate( 0, MAXDESCRIPTIONLENGTH+1 ) lcBuffer = ToLong( dwSize ) + ; ToLong( dwVersionMajor ) + ; ToLong( dwVersionMinor ) + ; ToLong( dwVersionBuild ) + ; ToLong( dwOptions ) + ; ToLong( dwReserved1 ) + ; ToLong( dwReserved2 ) + ; szDescriptionAnd pass lcBuffer to your DLL.