这个问题可能会很棘手。
场景:
我正在使用一个名为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 )
但是这个输出长度对我来说似乎是错误的^^
您正在使用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(....