高分求解!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转换 请问红色部分代码 该怎么转换?
谢谢。。 --------------------编程问答--------------------
获取到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
谢谢!! 最好能注明下:(突破自我) --------------------编程问答--------------------
--------------------编程问答-------------------- Emai: sdl2002lyx@163.com --------------------编程问答--------------------
[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);
setText为c#一个自定义对象的方法。
问题我已经发送邮件给你了,请查收。。
补充:.NET技术 , C#