Ограничения интерфейса в VB6 - PullRequest
5 голосов
/ 08 декабря 2010

Я пытаюсь реализовать (т.е. реализовать интерфейс) класс в VB 6, но я получаю эту ошибку: «Ошибка компиляции: неверный интерфейс для агрегатов: интерфейс содержит поля данных». Поэтому мне интересно, есть ли какие-либо ограничения на то, какой класс вы можете реализовать? Или, если кто-нибудь знает, почему я получаю эту конкретную ошибку, это также будет полезно.

Дайте мне знать, если мне нужно быть более ясным. Спасибо, ребята.

Dave

Ответы [ 2 ]

6 голосов
/ 08 декабря 2010

Интерфейсы в VB6 могут включать только методы, а не переменные-члены.

Вы можете смоделировать переменную-член, реализовав метод свойства (с функциями let и get).

4 голосов
/ 08 декабря 2010

Конструктор библиотеки типов VB имеет МНОГИЕ ограничения. вероятно, в этом интерфейсе используется параметр, который не совместим с тем, с чем VB крут, например, без знака long. VB МОЖЕТ обрабатывать длинную без знака, вам просто нужно поместить их в обычную переменную LONG, а затем обработать их немного по-другому из-за знака.

Таким образом, вам лучше всего использовать OLE-представление, чтобы открыть библиотеку типов, в которой определен этот интерфейс, скопировать ее в файл IDL самостоятельно и затем перекомпилировать ее с MIDL после изменения определения интерфейса, чтобы сделать его более удобным с VB.

Мэттью Керланд обсуждает это в своей книге на VB6 «Мощные техники для повседневных программ».

...