通过DLL的RTF 2 HTML转换不工作

本文关键字:转换 工作 HTML DLL RTF 通过 | 更新日期: 2023-09-27 17:51:14

这个问题可能会很棘手。

场景:

我正在使用一个名为Team Developer 6.1的IDE。它有自己的编程语言,叫做Gupta / Centura。现在,由于我没有其他的机会以其他方式做到这一点,我必须使用RTF-Control元素来获得GUI中的一点可用性。

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

不管怎样…我绑定在一个名为doxlib.dll的DLL中,里面有2个我想使用的函数。

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

_DoxStringConvert (将rtf-content转换为html-content)

我在网上找到了一些东西,帮助我让第一个运行。

最后从这里的第三个帖子使它运行!

第二个函数让我抓狂,因为我没有得到任何输出,我不知道为什么。我想这与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 )

但是这个输出长度对我来说似乎是错误的^^

通过DLL的RTF 2 HTML转换不工作

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

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

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

bOk = SalSetBufferLength(sTargetStr, nBuffLength)

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

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