#Define DC_BINS 6 && each array is in WORD value (2 bytes) #Define WORD_Size 2 cPrinterName = GetPrinter() nCountArray = DeviceCapabilities( cPrinterName, 'LPT1:', DC_BINS, Null, 0 ) If (nCountArray > 0) cBuffer = space( nCountArray * WORD_Size ) nReturn = DeviceCapabilities( cPrinterName, 'LPT1:', DC_BINS, @cBuffer, 0 ) ? nCountArray, nReturn && these value should be the same ? cBuffer endif ********* #Define DC_PAPERNAMES 16 && each array is a string with 64 bytes long #Define DC_PAPERNAMES_Len 64 nCountArray = DeviceCapabilities( cPrinterName, 'LPT1:', DC_PAPERNAMES, Null, 0 ) If (nCountArray > 0) cBuffer = space( nCountArray * DC_PAPERNAMES_Len ) nReturn = DeviceCapabilities( cPrinterName, 'LPT1:', DC_PAPERNAMES, @cBuffer, 0 ) ? nCountArray, nReturn && these value should be the same ? cBuffer endifThe rule applies to all DC_xxx value that needs an array buffer. Hope you can understand what I mean :)