厂家提供的接口文件时delphi写的,
引用接口之后一些参数不知道应该转换成什么,而导致“尝试读取或写入内存失败”的错误信息原接口文件是这样的:BYTE Read_Guest_Card( BYTE AReaderType, BYTE ACardType, BYTE APort, BYTE ASector, BYTE ABlock, BYTE * AHotelPwd,int ALockNo, BYTE AStartSuite, BYTE AEndSuite, int ACardID, int ASubCardID, char * ATime )我调用时是这样写的:
public static extern int Read_Guest_Card(byte AReaderType, byte ACardType, byte APort, byte ASector, byte ABlock, string AHotelPwd, int ALockNo, byte AStartSuite, byte AEndSuite, int ACardID, int ASubCardID,string ATime);但是执行到这一步就会报出那个错误。望高手指点。 在线等。
引用接口之后一些参数不知道应该转换成什么,而导致“尝试读取或写入内存失败”的错误信息原接口文件是这样的:BYTE Read_Guest_Card( BYTE AReaderType, BYTE ACardType, BYTE APort, BYTE ASector, BYTE ABlock, BYTE * AHotelPwd,int ALockNo, BYTE AStartSuite, BYTE AEndSuite, int ACardID, int ASubCardID, char * ATime )我调用时是这样写的:
public static extern int Read_Guest_Card(byte AReaderType, byte ACardType, byte APort, byte ASector, byte ABlock, string AHotelPwd, int ALockNo, byte AStartSuite, byte AEndSuite, int ACardID, int ASubCardID,string ATime);但是执行到这一步就会报出那个错误。望高手指点。 在线等。
char*------StringBuilder
否则,会有提示错误:“尝试读取或写入受保护的内容。这通常指示其他内存已损坏”
ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern byte Read_Guest_Card( byte AReaderType, byte ACardType, byte APort, byte ASector, byte ABlock, byte[] AHotelPwd,ref int ALockNo, byte AStartSuite, byte AEndSuite, int ACardID, int ASubCardID,ref StringBuilder ATime);