2009-04-20 2 views
0

У меня есть простая COM-библиотека с методом, который принимает две строки. В редакторе библиотеки типов delphi эти строки определяются как LPSTR. Это переводит на PChar в файле TLB. При обновлении с D2007 до D2009 это стало проблемой, поскольку PChar теперь изменился с PAnsiChar на PWideChar (он все еще становится PChar в TLB-файле, когда он создается из файла ridl). И интерфейс должен быть совместим с предыдущим ...COM-сервер Параметры AnsiString в Delphi 2009

Есть ли способ получить PAnsiChar как тип в файле TLB, чтобы он соответствовал предыдущей декларации в D2007?

+0

Вы должны использовать BSTR для всех параметров строки COM для начала. –

ответ

2

Вы можете изменить сгенерированный код самостоятельно. Самый простой способ, вероятно, состоит в том, чтобы обновить PChar:

type 
    PChar = PAnsiChar; 

Наверху сгенерированного блока.

Или просто найдите и замените все случаи (где необходимо) PChar с помощью PAnsiChar.

BTW, это странная COM-библиотека, поскольку она не совместима с Automation. Обычно BSTR (WideString в Delphi) используется для строк в COM.

+0

Вы правы, это странный интерфейс ... Лучший способ - это, возможно, сделать его новую версию (он используется только внутри нашего собственного SW). – ajob