我有一个带有两个字符串的方法的简单COM dll。在delphi的类型库编辑器中,这些字符串被定义为LPSTR。这转换为TLB文件中的PChar。当从D2007升级到D2009时,这成为一个问题,因为PChar现在已经从PAnsiChar变为PWideChar(当它从ridl文件生成时,它仍然成为TLB文件中的PChar)。接口需要与之前的接口兼容......
有没有办法让PAnsiChar作为TLB文件中的类型,以便它对应于D2007中的先前声明?
答案 0 :(得分:2)
您可以自己修改生成的代码。最简单的方法可能是重新宣布PChar:
type
PChar = PAnsiChar;
在生成的单元之上。
或者只是用PAnsiChar搜索并替换PChar的所有出现(如果需要)。
顺便说一下,它是一个奇怪的COM DLL,因为它不兼容自动化。通常,BSTR(Delphi中的WideString)用于COM中的字符串。