delphi调用c++的dll时传PAnsiChar的问题

hoskyloser 2008-10-28 07:17:56
小弟用delphi调用c++的dll时遇到一个问题:

int test(char* name,int namelen)
{
char* buf = new char[namelen];
memcpy(buf, filename, namelen);
ofstream ofs(buf, ios::out | ios::binary | ios::trunc);
......
//之后往文件里面写东西
}

name 是delphi中的PAnsiChar,namelen是name 的长度 请问这样可以么?

为什么我生成的文件名字是乱码?只有前几个字母是对的??请高手解答
...全文
297 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenyq2008 2008-10-29
  • 打赏
  • 举报
回复
不需要长度的,pchar跟char*都是以null结尾
  • 打赏
  • 举报
回复
不需要,字符串以0为结尾就行了.

PChar和char*都是以0为结尾的.
hoskyloser 2008-10-28
  • 打赏
  • 举报
回复
可能我没说清楚,

我调用dll中的int test(char* name, int namelen) 方法

我知道c++中的char* 对应的就是delphi中的PAnsiChar,可是照我的理解,c++中的char*应该有记录自身的长度,而delphi中的PAnsiChar没有长度,所以需要传进来一个长度,之后我在test方法中new char[namelen] 再把参数拷入,这个时候的buf的内容应该和我传进来的参数的内容是一样的,可是当我用ofstream操作的时候,生成的文件名是乱码,我不明白是我参数拷贝的时候出错,还是在用ofstream的时候出错。

请高手回答下!!!
  • 打赏
  • 举报
回复
这样就行了

int test(char* name)
{
ofstream ofs(name, ios::out | ios::binary | ios::trunc);
......
//之后往文件里面写东西
}

functional test(name:PChar):integer;


hoskyloser 2008-10-28
  • 打赏
  • 举报
回复
大侠们帮帮忙啊,如果这个地方没有错的话我再去找别的地方,但是目前我最怀疑的就是这里,网上查了半天也没弄明白
hoskyloser 2008-10-28
  • 打赏
  • 举报
回复
csdn咋没人了呢
hoskyloser 2008-10-28
  • 打赏
  • 举报
回复
在线等啊!!!
once_and_again 2008-10-28
  • 打赏
  • 举报
回复
试试吧,推测推测

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧