【问题标题】:VB6 calls to ActiveX component with string parameters yield weird resultsVB6 使用字符串参数调用 ActiveX 组件会产生奇怪的结果
【发布时间】:2011-06-20 06:07:32
【问题描述】:

我目前正在完成一个现已离职的同事开始的软件。

该应用程序采用 VB6 编码,并使用第 3 方 ActiveX 组件对第 3 方系统进行操作。我们的解决方案基本上是他们公司的软件和我们的软件之间的集成。

我遇到的问题是,有一个方法调用始终失败,即使它在我们这边传递了完全有效的参数(它是一个登录方法)。但是,当我查看他们的应用程序提供的跟踪信息时,我发现它不是我指定的用户名,而是(大致)告诉我“用户 '⚠⚠⚠' 无法登录”。

我认为这可能是一个编码问题,因为替换我给它登录的字符的 ⚠ 字符似乎在那里,因为这些字符是未知的,但我没有做任何事情来解决它。

任何人都知道 VB6 与 ActiveX 组件通信的问题吗?或者有人知道我可以尝试什么吗?我在这里不知所措,如果问题在他们这边,那么修复它会很痛苦,因为我们没有他们的源代码。

提前致谢。

【问题讨论】:

  • (1) 请显示代码(至少在您传递字符串的地方),(2) 这是唯一失败的字符串方法吗?换句话说,您还有其他调用来比较它的行为吗?
  • Set objIRC = objRCL.Login("User, "pass"). 它是唯一失败的,但可能是因为只要我没有登录就无法进行其他调用开。
  • 没有办法告诉基于轻薄的信息。它是否可能需要 ANSI 字符的字节数组而不是 Unicode 字符串?
  • 前段时间我在将字符串传递给用 C 编写的 DLL 时遇到了这样的问题,要解决它,我必须在传递之前将字符串转换为 Unicode,所以我在想@BobRiemerma 是正确的。

标签: string encoding vb6 activex


【解决方案1】:

有几种传递字符串的方法。除了在

中传递字符串的明显方式之外
DIM u As String
DIM p As String
u = "Username"
p = "Password"
Set objIRC = objRCL.Login(u, p)

.Login 也有可能期望指向 String 的指针,在这种情况下为代码

Set objIRC = objRCL.Login(StrPtr(u), StrPtr(p))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 2011-10-15
    • 2016-06-15
    • 2010-10-14
    相关资源
    最近更新 更多