当前位置:编程学习 > C#/ASP.NET >>

高分求解!C# 调用DELPHI动态库的问题

现在使用C# 调用delphi 7编写的动态库

库里面有个函数如下:

produce Test
  var
    len:integer,
    p:pchar,
    bufdata:array [0..32*1024-1] or char,
  begin 
    p:=bufdata;
    len:=getData("","","",0,0,p);
    setText("","","",PInt(@bufData)^,len);  end

代码大致如下,getData为delphi动态库的函数,根据获取到的len值调用setText方法。。


pchar可以使用stringbuilder转换 请问红色部分代码 该怎么转换?

谢谢。。 --------------------编程问答--------------------
引用楼主 wtpmcheng 的回复:
▪ 云计算与80年代“大型机-终端...▪ 云计算能为企业数据中心带来哪...▪ 高性能计算云是什么?能解决什...▪ 物联网云的体系结构是怎样的?▪ 云存储架构是怎样的?
现在使用C# 调用delphi 7编写的动态库

库里面有个函数如下:

produce Test
  var
  len:integer,
  p:pchar,
  bufdata:array [0..32……


获取到len值后 要调用一个c#的函数把参数传进去
函数原型如下:
sendToDB(string strIDs,int intCMDId,ref int intBuf,int intLen);

strIDs和intCMDId为已知的,
而intBuf 类似PInt(@bufData)^
intLen为返回的len值。
--------------------编程问答-------------------- 你把getData这个函数声明贴出来。。。 --------------------编程问答--------------------

function getData(const sIDs,sDevIDs:wideString;num1,num2,num3:integer;p:pchar) Integer

--------------------编程问答-------------------- 这样定义:

[DllImport("xxx.dll" CallingConvention = CallingConvention.StdCall)] 
public static extern int getData
([MarshalAs(UnmanagedType.LPWStr)]string sIDs,
 [MarshalAs(UnmanagedType.LPWStr)]string sDevIDs,
 int num1,int num2,int num3,
 [MarshalAs(UnmanagedType.LPStr)] StringBuilder p); 
--------------------编程问答-------------------- --------------------编程问答-------------------- 你说的这个我先试试。。。

setText("","","",PInt(@bufData)^,len); end


这个函数里面的PInt(@bufData)^怎么转换。 --------------------编程问答-------------------- 那你把setText这个函数声明贴出来。。。 --------------------编程问答-------------------- produce Test
  var
  len:integer,
  p:pchar,
  bufdata:array [0..32*1024-1] or char,
  begin  
  p:=bufdata;
len:=getData("","","",0,0,p);
setText("","","",PInt(@bufData)^,len); end

delphi函数原型
setText(const sIDs:widestring;const sIEs:widesting:iCmd:Integer;var buf:Integer;len:integer);


这段代码在delphi可以实现。
现在C#里面setText的函数原型如下
setText(string strIDs,string strIes,ref int buf,int intLen);


--------------------编程问答-------------------- 有时间方便的话 留下你的联系方式发到我的邮箱
具体问题 单独和你讨论下。

chankcheng80y@sina.com.cn

谢谢!! 最好能注明下:(突破自我) --------------------编程问答--------------------

[DllImport("xxx.dll" CallingConvention = CallingConvention.StdCall)] 
 public static extern void setText
([MarshalAs(UnmanagedType.LPWStr)]string sIDs,
 [MarshalAs(UnmanagedType.LPWStr)]string sIEs,
 int iCmd,ref int buf,int len); 
--------------------编程问答-------------------- Emai: sdl2002lyx@163.com --------------------编程问答--------------------
setText为c#一个自定义对象的方法。

问题我已经发送邮件给你了,请查收。。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,