原来的c的.h文件如此定义一个登陆函数:
BOOL WINAPI Login_R(LPCTSTR SystemID, //用户标识 char [MAX_SMEI_SYSTEMID]
LPCTSTR Password //密码 char[MAX_SMEI_PASSWORD]
);
我改装到delphi为:
  function Login_R(SystemID:LPCTSTR; Password:LPCTSTR):BOOL;stdcall;external dllname;
其中dllname是定义的原来的文件name;然后开始调用,先调用初始化函数,成功;
再调用Login_R:
IfLogin:=Login_R(‘123,‘123‘);
返回结果为false;
在短信网关查看,是我的机器去连接登陆网关了,用户名正确,密码无法看到,但是报错为密码错误。
可问题是用户名和密码是相同的,怎么会传过去后用户名正确,密码错误呢?
请求达人解答!!谢谢

解决方案 »

  1.   

    IfLogin:=Login_R(‘123,‘123‘); 这个就是你代码里写的???
      

  2.   

    username:array[0..MAX_SMEI_SYSTEMID] of char;
    password:array[0..MAX_SMEI_PASSWORD] of char;
    CopyMemory(@username[0],pChar('123'),length('123'));
    CopyMemory(@password[0],pChar('123'),length('123'));IfLogin:=Login_R(pChar(@username[0]),pChar(@password[0]));
      

  3.   

    晕, 楼上的怎么那么复杂, 好像还不对~~ username 用 CopyMemory 不存在 '\0'定义函数为function Login_R(SystemID: Pchar; Password: Pchar): Boolean; stdcall; external dllname;调用为var
      SystemId, Password: string;SystemId = '123';
    Password = '123';Login_R(Pchar(SystemId), Pchar(Password));
      

  4.   

    var  里改一下就限长度了
      SystemId: string[MAX_SMEI_SYSTEMID];
      Password: string[MAX_SMEI_PASSWORD];
      

  5.   

    恩,Pchar(SystemId), 总是报错,过不去....