0

这个问题可能会变得棘手。

设想:

我正在使用一个名为Team Developer 6.1. 它有自己的编程语言,称为Gupta / Centura. 现在,由于我没有其他机会以其他方式执行此操作,因此我必须使用 RTF-Control 元素来获得 GUI 的一些实用性。

我想要实现的是发送一封电子邮件,但内容是 RTF,我必须将其转换为 HTML

无论如何...我绑定在一个名为的 DLLdoxlib.dll中,里面有 2 个我想使用的函数。

_DoxConvert (将 rtf 文件转换为 html 文件)

_DoxStringConvert (将 rtf 内容转换为 html 内容)

我在 Internet上找到了一些帮助我运行第一个的东西。

最后,从这里开始的第三个帖子让它运行了!

第二个功能让我发疯,因为我没有输出,我不知道为什么。我想这与output length buffer. 该函数也0一直返回,但在示例中它应该返回某种数字......实际上我的观点是我未能阅读第三个回复:D

如果第三个回复从 autoit 转换为 c++,有人知道这在 C++ 中会是什么样子吗?

目前我的电话看起来像(Centura)

Function:  ConvertToHTML
Parameter: String sInput
           String sOutput

Set nLen = _DoxStringConvert( sInput , SalStrGetBufferLength( sInput ), sOutput, SalStrGetBufferLength( sOutput), DOX_IN_RTF|DOX_OUT_HTML )

示例调用:

Call ConvertToHTML( "my string", output_var )

但是这个输出长度的东西对我来说似乎很不对^^

4

1 回答 1

0

您正在使用 TD6.1,它是 UNICODE。由于 Team Developer 在 v5.0 中从 ANSI 切换到 Unicode,SalStrGetBufferLength() 已被弃用。您需要使用SalGetBufferLength()以获得更好的结果。

SalGetBufferLength() 获取缓冲区用于存储指定字符串的字节数。

此外,从 TeamDeveloper 调用任何外部函数时,您必须使用 SalSetBufferLength 为任何字符串分配内存,即

bOk = SalSetBufferLength(sTargetStr, nBuffLength)

设置缓冲区用于存储指定字符串的字节数。

在你的情况下调用 SalSetBufferLength( sInput, nnn) 调用 SalSetBufferLength( sOutput, nnn) 然后设置 nLen = _DoxStringConvert(....

于 2019-01-18T00:09:56.933 回答