用别的系统调用DELPHI编的DLL(有字符参数)时必须(如何)用sharemem(borlndmm.dll)?(50分)

  • 主题发起人 主题发起人 winslow
  • 开始时间 开始时间
好的,非常感谢,我再试试,我这个DLL没有输出。
另外:用PChar的话还要不要用sharemem?
为什么用PChar作string的值参会吃掉一个字符?
 
呵呵又来了一位老先生
PChar由程序编写者管理,string由Pascal管理。
这句话是对的,上面的就错了。
string和pchar类型相容?别忘了pchar是/0结束的。

 
To winslow:pchar被吃掉一个字符正是因为存储格式的不同,
string的首位字节并不是第一个字符,而是存储整个字符串的长度
 
To Barton: 请问你要是传递带#0的串怎么办?还用pchar?
 
我把那个var 去掉以后解决了!
可我记得刚开始写时就因为没加这个VAR而出错,而且现在我在DELPHI编的主程序里调用有错
,在notes里调用却没有错,不知为什么?
我现在的DLL没有使用sharemem,用PChar,没有在内部用strpas转化,能正常传递参数了
真是高兴,这个问题困扰了我很长时间,在CSDN一直得不到解答,还是这里的高手多。
可我的分数太少,可用分也只有四十了,只好对大家都表示一下我真挚的谢意,这里加分
难道一定要另开贴子吗?
真希望能和你们做个朋友,如果分数不够的话告诉一声,等我以后补上了
 
多人接受答案了。
 
iie兄弟:
string如果你当成PChar使用,当然也不能带/0的。事实上,每个string的结尾也是/0。
 
string可以处理带#0的字符串,pchar不可以,差别就在这里
 
哈哈。这位兄弟真倔。
带/0的串什么用也没有的。差别?差别就太多太多了。如果你非要PChar处理带/0的串太是
小儿科了。
 
我只是想找到处理带#0的串的办法而已,因为我这里全是这样的数据,呵呵。
不知道大儿科是怎么处理的,可不要告诉我都先转换成hexstr再传递哦。
还有,总叫我兄弟大概不好,我想我的年龄肯定比你大,呵呵。
 
string也是/0结束,不是吧,DELPHI定string长度应是在第一位呀,和C的办法的根本不同之处。
 
后退
顶部