我这样写系统却提示没有 lstrcpy 这个函数,不知道要怎么加啊!

函数原型
DWORD StartSession_v2 (LONG LockCard, LONG Version,LPSTR Server,LPSTR LogUser);
用delphi 调用StartSession_v2(software,version,pchar(s),'DllUser');
其中 s 是string 形

用PB调用的话网上很多人都说这种调用方法
Function string startsession_v2(long lockcard,long version,ref string server,ref string loguser)Library "LockDll.Dll"

sting s
s='192.168.1.1'
StartSession_v2(2,9,ref s,'DllUser');
但是我写上去程序一直要报错,也不知道什么原因
哪位高手能帮下小弟吗?不甚感激
谢谢 wforce 的回答。不过源函数是字符型指针,用PB调用直接用string 不行吧。我照你的方法写进去了。但还是要报错的。 
youyuan1688 回答的应该是正确答案了,不过我不知道怎么写代码。
//server1 = '150.0.1.251'
//server2 =space(255)
//server=lstrcpy(server2,server1)

炎炎设计
浏览 98回答 2
2回答

临摹微笑

sting s,ls_users='192.168.1.1'ls_user = 'DllUser'StartSession_v2(2,9,s,ls_user) ----很遗憾,PB不支持指针

qq_笑_17

为字符串分配的空间不足,你试试直接用字符数组看看。对于一般的out成员,在PB中需要先为字符串分配空间,一般也就是用space(255)这样来做,但你这个是in out的,字符串可能比较难处理,可选的也就只有数组和blob两个了,用数组的时候用定长255的数组,动态数组还是没有分配空间的 原来不是这个问题,这个问题有两点,第一你在PB中声明的时候大小写没有注意,这个如果没有alias,这样是不行的,大小写必须和DLL中一致(有alias则 alias for 后面的那个字符串与DLL中的一致),二必须DLL中的函数正常运行才行,否则PB总是报一样的错误的,测试表明,你的LockDll.Dll需要其它DLL的支持才能正常运行。你只要将所有的DLL拷贝到PBt所在的目录,然后这样声明外部函数就成了:Function long StartSession_v2(long lockcard,long version,string server,string loguser) Library "LockDll.Dll" 都是普通参数使用我就不多少了,因为我没有正确的SQLServer数据库只能得出-53247,也就是FFFF3001,连接SQL出错了
打开App,查看更多内容
随时随地看视频慕课网APP