关于用.Net平台开发SPMS_API开发接口里的PChar说明——转载

原创 2007年09月25日 21:48:00

SPInterface.dll

上行接收函数: GetCNGPDeliverSM

问题说明: 此开发包为Delphi6开发,其中用了PChar这种Vb和.Net不直接支持的数据类型,需要一定的转换.

下面为VB.Net 2005开发代码示例:

定义部份:

Imports System.Runtime.InteropServices

Private Declare Function GetCNGPDeliverSM Lib "SP_Interface.dll" ( _
   <MarshalAs(UnmanagedType.VBByRefStr)> ByRef sMsgID As String, _
   ByRef byMsgFormat As Byte, _
   <MarshalAs(UnmanagedType.VBByRefStr)> ByRef sRecvTime As String, _
   <MarshalAs(UnmanagedType.VBByRefStr)> ByRef sOrgAddr As String, _
   <MarshalAs(UnmanagedType.VBByRefStr)> ByRef sDestAddr As String, _
   ByRef byMsgLen As Byte, _
   <MarshalAs(UnmanagedType.VBByRefStr)> ByRef sMsgContent As String, _
   ByRef byProValue As Byte, _
   ByRef byIsReport As Byte, _
   <MarshalAs(UnmanagedType.VBByRefStr)> ByRef sSrcMsgID As String, _
   <MarshalAs(UnmanagedType.VBByRefStr)> ByRef sSubmitdate As String, _
   <MarshalAs(UnmanagedType.VBByRefStr)> ByRef sDonedate As String, _
   <MarshalAs(UnmanagedType.VBByRefStr)> ByRef sStatus As String, _
   ByRef iDeliverAckResult As Int32, _
   <MarshalAs(UnmanagedType.VBByRefStr)> ByRef Link_ID As String, _
   <MarshalAs(UnmanagedType.VBByRefStr)> ByRef BeneficiaryID As String) As Int32

初台化各指针

Public Sub XX()

Dim Result As Int32
Dim sMsgID As New String(Chr(0), 10)
Dim byMsgFormat As Byte = 0
Dim sRecvTime As New String(Chr(0), 14)
Dim sOrgAddr As New String(Chr(0), 20)
Dim sDestAddr As New String(Chr(0), 20)
Dim byMsgLen As Byte = 0
Dim sMsgContent As New String(Chr(0), 254)
Dim byProValue As Byte = 0
Dim byIsReport As Byte = 0
Dim sSrcMsgID As New String(Chr(0), 20)
Dim sSubmitdate As New String(Chr(0), 10)
Dim sDonedate As New String(Chr(0), 10)
Dim sStatus As New String(Chr(0), 7)
Dim iDeliverAckResult As Byte = 0
Dim Link_ID As New String(Chr(0), 20)
Dim BeneficiaryID As New String(Chr(0), 21)

End Sub

详细说明:

在下行的时候虽说传入参数也有PChar类型,不过用String类型可以表示并系统可以识别,不需要我们自己去转换,其它类型的可按开发文档上的Byte和Int32类型表示

上行因为PChar是指针引用,象ByRef或Output这种按引用传值方式,所以需要托管代码到非托管代码的一个指针转换,那么可以使用UnmanagedType.VBByRefStr 进行"特性"说明这一转换,C#也一样,好象.Net1.1不支持这一项,我也没研究过

除了这一项之外还有就是必须分配内存空间,这里我用New String(Chr(0),100)表示,后面的100是字符长度,这个是定长.

 

相关文章推荐

asp.net mvc短信接口调用——阿里大于API开发心得

互联网上有许多公司提供短信接口服务,诸如网易云信、阿里大于等等。我在自己项目里需要使用到短信服务起到通知作用,实际开发周期三天,完成配置、开发和使用,总的说,阿里大于提供的接口易于开发,非常的方便,短...

ASP.NET调用新浪微博开放平台API接口的代码示例

前阵子开发三亚旅游官网的过程中,涉及到微博的API调用,特别是SINA的,所以现在给大家分享这段时间的学习经验。   使用新浪微博开放平台接口,需要先申请一帐号,申请方法:给 @微博开放平台 发送...

用ASP.NET Web API技术开发HTTP接口(二)

在第一部分,我们创建了一个基本的ASP.NET Web API项目,新建成功了数据表,然后添加了一些测试数据,最后创建了API控制器,用json格式把数据表里面的内容成功输出到浏览器上。接下来我们将继...
  • kiualen
  • kiualen
  • 2017年07月31日 20:08
  • 238

微信公众平台开发接口.net

  • 2013年10月31日 15:01
  • 5KB
  • 下载

ASP.NET5 REST API使用示例——基于云平台+云服务打造自己的在线翻译工具

做为一个程序员可能在学习技术,了解行业新动态,解决问题时经常需要阅读英文的内容;而像我这样的英文小白就只能借助翻译工具才能理解个大概;不禁经常感慨,英文对学习计算机相关知识太重要了!最近发现IBM的云...

基于.NET平台的分层架构实战(五)——接口的设计与实现

接下来,将进行接口的设计。这里包括数据访问层接口和业务逻辑层接口。在分层架构中,接口扮演着非常重要的角色,它不但直接决定了各层中的各个操作类需要实现何种操作,而且它明确了各个层次的职责。接口也是系统实...

佳博打印机.net平台下的开发API

  • 2017年10月22日 23:31
  • 140KB
  • 下载

.Net语言 APP开发平台——Smobiler学习日志:用MenuView控件仿钉钉APP的首页菜单

.Net语言 APP开发平台——Smobiler学习日志:用MenuView控件仿钉钉APP的首页菜单 最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比X...

.Net语言 APP开发平台——Smobiler学习日志:如何在手机上实现表单设计

.Net语言 APP开发平台——Smobiler学习日志:如何在手机上实现表单设计

.Net语言 APP开发平台——Smobiler学习日志:如何实现微信朋友圈的消息样式?

最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便   一、目标样式 我们要实现上图中的效果,需要如下的操作: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于用.Net平台开发SPMS_API开发接口里的PChar说明——转载
举报原因:
原因补充:

(最多只允许输入30个字)