c 呼叫 dephi 字串傳輸

2021-07-10 16:54:13 字數 1740 閱讀 2966

下面就來看下我的解決方案吧,希望對你有用:

1.先說下方式:

採用 c# stringbuilder 對應 dephi 的 pointer

2.誤區點:

c# : [dllimport("sign_anysigninte***ce.dll", charset = charset.ansi // 這個地方必須為:ansi  不然會亂碼,這個折騰了好久

dephi: function sign_anysigngetinfo_ex(ninfolx :integer ;qmxh :pchar ;memo :pchar; strinfo :pointer ):boolean ;stdcall;   //  strinfo  前面一定不要加 var,加了就無法返回結果

說完這些還是上**最直接:

c# :

//靜態反射

[dllimport("sign_anysigninte***ce.dll", charset = charset.ansi, callingconvention = callingconvention.stdcall, entrypoint = "sign_anysignverifydata")]

public static extern boolean sign_anysignverifydata(int qmxh, stringbuilder memo, stringbuilder strinfo);

//呼叫反射

stringbuilder sbbuilder = new stringbuilder(1000000);

bool bl = anysignmethods.sign_anysignverifydata(int.parse(qmxh), new stringbuilder(memo), sbbuilder);

strinfo = sbbuilder.tostring();

dephi:

定義:function sign_anysignverifydata(qmxh :integer ;memo :pchar; strinfo :pointer  ):boolean ;stdcall;

方法:function sign_anysignverifydata(qmxh :integer ;memo :pchar; strinfo :pointer ):boolean ;stdcall;

varb_ret :boolean ;

strlog :string ;

strmeno:widestring;

strinfo1:widestring;

str,strlen:string;

pstr:pchar;

plen,i:integer;

begin

result :=false ;

while char(strinfo^) <> #0 do

begin

str := str +string(char(strinfo^));

inc(integer(strinfo));

end;

str := 『你的字串』;

pstr:=pchar(str);

plen:=length(str);

for i:=0 to plen do

begin

char(strinfo^):=pstr[i];

inc(integer(strinfo));

end;

char(strinfo^):=#0;

result :=true ;

end;

C 解析字串,呼叫函式

using namespace rtt detail templateclass methodregst class dataprambase class datasourcebase templateclass datasource public datasourcebase boost func...

c 字串新增字元 C 字串

在 c 語言中,字串實際上是使用null字元 0 終止的一維字元陣列。因此,乙個以 null 結尾的字串,包含了組成字串的字元。下面的宣告和初始化建立了乙個 hello 字串。由於在陣列的末尾儲存了空字元,所以字元陣列的大小比單詞 hello 的字元數多乙個。char greeting 6 依據陣列...

C字串和C 字串

在c中,並沒有字串這個資料型別,而是使用字元陣列來儲存字串。c字串實際上就是乙個以null 0 字元結尾的字元陣列,null字元表示字串的結束。需要注意的是 只有以null字元結尾的字元陣列才是c字串,否則只是一般的c字元陣列。c字串定義時可以利用 號進行初始化,但是以後不能利用 對c字串進行賦值。...