Использование UDT в кач-ве аргументов/возвращаемых значений

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
MiGan
Обычный пользователь
Обычный пользователь
 
Сообщения: 60
Зарегистрирован: 02.05.2005 (Пн) 13:27

Использование UDT в кач-ве аргументов/возвращаемых значений

Сообщение MiGan » 05.10.2005 (Ср) 17:42

Подскажите, почему при попытке использования моего UDT в кач-ве аргумента public м-тода моего класса компайлер дает ошибку:

"Only public user defined types defined in public object modules can be used as parameters or return types for public procedures of class modules or as fields of public user defined types".

Все вроде сделано как надо, создан новый модуль (modPublic, например), там прописана декларация моего UDT:

Код: Выделить всё
public type TRegion
  lID as long
  sRGN_NAME as string
end type


Создан класс(CRegions, например, инкапс. работу с массивом структур TRegion), в нем объявлена процедура:
Код: Выделить всё
public sub AddRegion(Rgn as TRegion)
'...операторы функции
end sub


В чем дело???

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Re: Использование UDT в кач-ве аргументов/возвращаемых значе

Сообщение Ennor » 05.10.2005 (Ср) 17:58

MiGan писал(а):Only public user defined types defined in public object modules ...

А твой modPublic - обычный модуль, не объектный. Проще говоря, объявляй структуры там же, где собираешься их использовать.

MiGan
Обычный пользователь
Обычный пользователь
 
Сообщения: 60
Зарегистрирован: 02.05.2005 (Пн) 13:27

Re: Использование UDT в кач-ве аргументов/возвращаемых значе

Сообщение MiGan » 05.10.2005 (Ср) 18:06

Ennor писал(а):А твой modPublic - обычный модуль, не объектный. Проще говоря, объявляй структуры там же, где собираешься их использовать.


Угу... Но токмо, если объявить UDT как Public внутри модуля класса, то тогда будет следующее:

Cannot define a public user-defined type within a private object module.

А нужно мне, чтобы мой класс мог принимать аргументы в виде структур UDT и соответственно, возвращать их. А работать с ними монжо было бы из других классов (в т.ч. классов форм)...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.10.2005 (Ср) 20:54

MiGan, задай тип проекта ActiveX EXE.
Тогда ты сможешь объявить свой модуль класса как публичный.
И будет тебе Щастье.
Изображение

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 05.10.2005 (Ср) 21:15

Объяви структуру как Public в модуле проекта. А прцедуру, которая этот тип использует, объявляй в классе как Friend.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 42

    TopList