проблема с типами и параметрами функций

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

проблема с типами и параметрами функций

Сообщение dorido » 06.07.2009 (Пн) 5:20

имеется модуль, в котором объявлен глобальный тип(например public type XTYPE)
имеется класс, в котором определена функция вида public function Fn( x as XTYPE) as integer
собственно компилятор ругается на параметр функции, сообщая что-то вроде, только паблик типы определённые пользователем в паблик модулях могут использоваться в качестве параметров паблик функций класса.
вопрос в том, в каком месте, объявляя тип, я потерял паблик(если потерял) и как заставить функцию скушать такой параметр?
By oppression’s woes and pains,
By your sons in servile chains,
We will drain our dearest veins
But they shall be free!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: проблема с типами и параметрами функций

Сообщение alibek » 06.07.2009 (Пн) 7:14

Обманываешь.
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
Lasciate ogni speranza, voi ch'entrate.

trash
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 113
Зарегистрирован: 28.01.2009 (Ср) 12:09

Re: проблема с типами и параметрами функций

Сообщение trash » 06.07.2009 (Пн) 11:04

alibek писал(а):Обманываешь.
В каком месте? Он все четко описал и сразу понятно, где налажал.

dorido, объявляй тип в классе.

dorido
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 107
Зарегистрирован: 27.02.2005 (Вс) 17:10
Откуда: Angarsk

Re: проблема с типами и параметрами функций

Сообщение dorido » 06.07.2009 (Пн) 11:47

хмм.
объявляем тип в модуле класса. если объявлять как public, то вб говорит, что нельзя паблик типы объявлять в приват модуле. если объявляем тип как private, то - нельзя использовать приват типы для параметров.

alibek, модуль аля module1.bas не является паблик модулем?)
By oppression’s woes and pains,
By your sons in servile chains,
We will drain our dearest veins
But they shall be free!

karlex
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 138
Зарегистрирован: 30.03.2009 (Пн) 20:25
Откуда: Пермский край, г.Кунгур

Re: проблема с типами и параметрами функций

Сообщение karlex » 06.07.2009 (Пн) 13:04

dorido писал(а):модуль аля module1.bas не является паблик модулем?)

Он не является паблик обжект модулем.
Все гениальное — просто!
-------------------------------------
Кто ищет — тот всегда найдет!
-------------------------------------
Лень — двигатель прогресса.
Прогресс — двигатель лени.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: проблема с типами и параметрами функций

Сообщение Хакер » 06.07.2009 (Пн) 13:05

Не является. Можешь объявить типы в TLB. Без всякий модулей, потому что типы являются самостоятельной сущностью, такой же как модуль или класс с точки зрения TLB.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

dorido
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 107
Зарегистрирован: 27.02.2005 (Вс) 17:10
Откуда: Angarsk

Re: проблема с типами и параметрами функций

Сообщение dorido » 06.07.2009 (Пн) 16:14

тогда остаётся актуальной задача заставить класс скушать структуры ^-^
есть ли способ более простой, чем не заморачиваться на структуре и передавать всё по отдельности?
By oppression’s woes and pains,
By your sons in servile chains,
We will drain our dearest veins
But they shall be free!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: проблема с типами и параметрами функций

Сообщение Хакер » 06.07.2009 (Пн) 16:31

А помоему задача не остаётся актуальной. Способы решения были предложены.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: проблема с типами и параметрами функций

Сообщение Денис » 07.07.2009 (Вт) 13:41

dorido писал(а):тогда остаётся актуальной задача заставить класс скушать структуры ^-^
есть ли способ более простой, чем не заморачиваться на структуре и передавать всё по отдельности?


Вы еще "плаваете" в ООП, как я некогда. Смотрите:

Это структура в ФП:
Код: Выделить всё
Dim S1 as MY_TYPE 'ваша паблик-структура из функционального модуля
Dim S2 as MY_TYPE

S1.Param1 = 1
S1.Opt1 = 100

S2 = S1 'ваша передача структуры


А вот это класс в ООП:
Код: Выделить всё
Dim С1 as MY_CLASS 'класс из объектного модуля класса
Dim С2 as MY_CLASS

Set C1 = new MY_CLASS

C1.Param1 = 1
С1.Opt1 = 100

Set С2 = С1 ' передача класса


Есть разница? Есть. Но она минимальна. Строка с оператором Set для создания экземпляра класса и им же присвоение классов. Зато все сработает. Вот код класса, если интересно:

Код: Выделить всё
public Param1 as integer
public Opt1 as Bute


например, или так (это уже в классбилдере погенерено)
Код: Выделить всё
Private mvarParam1 As Integer 'local copy
Private mvarOpt1 As Byte 'local copy

Public Property Let Opt1(ByVal vData As Byte)
    mvarOpt1 = vData
End Property


Public Property Get Opt1() As Byte
    Opt1 = mvarOpt1
End Property



Public Property Let Param1(ByVal vData As Integer)
    mvarParam1 = vData
End Property


Public Property Get Param1() As Integer
    Param1 = mvarParam1
End Property


Отличия: в первом варианте паблик-переменные, во втором свойства (property) класса, через которые идет обращение к приват-переменным. удобство свойств в том, что одновременно с присвоением можно выполнить еще кучу действий (конвертаций там и т.п.)
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: проблема с типами и параметрами функций

Сообщение alibek » 07.07.2009 (Вт) 13:48

Денис писал(а):Есть разница? Есть. Но она минимальна.

Разница огромна.
Попробуй использовать класс RECT вместо структуры RECT.
Lasciate ogni speranza, voi ch'entrate.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: проблема с типами и параметрами функций

Сообщение Денис » 07.07.2009 (Вт) 13:57

alibek писал(а):Разница огромна.

Я имел ввиду синтаксическую разницу. Она минимальна: Имя.Параметр = Что-то и всё.
Логическая же разница да, огромна. Другой уровень, как говорил Эйнштейн.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 82

    TopList