Ограничения интерфейса в VB6

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

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

Дэйв


person Perishable Dave    schedule 07.12.2010    source источник
comment
Было бы полезно, если бы вы разместили код интерфейса в своем вопросе.   -  person MusiGenesis    schedule 08.12.2010
comment
Что ж, класс, который я реализую, взят из архаичной библиотеки электронных таблиц (то есть F1Book), для которой у меня нет исходного кода. Таким образом, единственный код, который я должен был бы опубликовать, — это Implements F1Book.   -  person Perishable Dave    schedule 08.12.2010


Ответы (2)


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

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

person Joel Spolsky    schedule 07.12.2010
comment
Представляете, ответ Джоэла. Я следил за вашим блогом до stackoverflow. Еще по теме: знаете ли вы, позволяет ли MSVB6 простой способ заглушить все переменные-члены? - person Perishable Dave; 08.12.2010

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

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

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

person DarinH    schedule 07.12.2010