2009-04-20 62 views
0

我有一个简单的COM dll,它带有一个需要两个字符串的方法。在delphi的类型库编辑器中,这些字符串被定义为LPSTR。这转换为TLB文件中的PChar。当从D2007升级到D2009时,由于PChar现在已经从PAnsiChar变为PWideChar(当它从ridl文件生成时它仍然变成TLB文件中的PChar),这成为一个问题。并且界面需要与前一个兼容...COM服务器Delphi 2009中的AnsiString参数

有没有办法在TLB文件中获取PAnsiChar作为类型,以便它对应于D2007中的前一个声明?

+0

您应该使用BSTR开头的所有COM字符串参数。 – 2009-12-14 20:05:21

回答

2

您可以自行修改生成的代码。最简单的方法可能是重新声明PChar:

type 
    PChar = PAnsiChar; 

在生成的单元之上。

或者只是搜索并用PAnsiChar代替PChar的所有发生(如果需要)。

顺便说一句,这是一个奇怪的COM DLL,因为它不是自动化兼容的。通常,BSTR(Delphi中的WideString)用于COM中的字符串。

+0

你说得对,它是一个奇怪的界面......最好的方法可能是制作一个新版本(它只在我们自己的软件内部使用)。 – ajob 2009-04-20 12:42:09