2010-12-07 4 views
5

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

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

Dave

+1

Это поможет, если вы разместите код интерфейса в своем вопросе. – MusiGenesis 2010-12-07 21:53:03

+0

Ну, класс, который я реализую, из архивной библиотеки электронных таблиц (это F1Book), к которой у меня нет источника. Поэтому единственным кодом, который я должен был бы опубликовать, является «Реализация F1Book». – 2010-12-07 21:58:46

ответ

6

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

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

4

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

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

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