SMS_AT.dll: 数据交换?
1、主程序获取gExe、gMsg; s780E_GetSet传递到DLL;
2、对列:
PChar参数: 传入array[0..255] of Char;
ZeroMemory(@mmBuf, 256);
StrCopy(@mmBuf,PAnsiChar(‘使用指向字符串的指针1’));
SMS_t_780E:AT指令线程
SMS_m_COM:串口通用功能
strcopy 将一个字符串复制到另一个字符串中
strpcopy 将pascal 类的字符串复制为以null 结束的字符串
strplcopy 从pascal 类的最大长度字符串复制为以null 结束的字符串
strpas 将以null 结束的字符串转换为pascal 类的字符串
尽量不要这么干,因为我们项目以前干过。。。
最好返回简单类型,比如用int代表是否成功。
然后用一个参数返回字符串信息。
然后这个参数内存由调用方先申请(最大长度也可以传递进来,避免超长),
使用完成后由调用方释放。
最后不要用字符串+ 什么的。
delphi会优化+的逻辑,两个ansistring + 一起,鬼才知道到底是拷贝一份,还是扩展了空间。容易出非法访问的问题。
总结:
1)用函数参数而不是返回值。空间调用方申请,调用方释放,表明最大长度。
2)被调用放只管用,不要用+ 不要用:= ,用StrPCopy或内存拷贝,来拷贝内容到参数中。
不知道说清楚没有。。。
