создание dll

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

создание dll

Сообщение optimizm » 24.03.2006 (Пт) 13:37

Пытаюсь создать dll в VB.
Есть модуль содержащий такое поисание структуры
Код: Выделить всё

Type upol_l_struct
   nls_u As Long
   fio_u As String * 61
   seria_u As String * 11
   ndok_u As String * 10
   kemv_u As String * 40
   adrs_u As String * 70
   post_u As String * 70
   dover_u As String * 10
   vid_u As Long
   datbeg_u As Long
   datend_u As Long
   prizn_u As Long
   grag_u As Long
   viddok_u As Long
   datav_u As Long
   prava As Long
   null_upol As Long
End Type


Если собирать dll то в любой функции, где есть параметр этого типа выходит ошибка. Если делать эту функцию private то все работает нормально. Что же делать чтоб работало и при public?[/syntax]

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

Сообщение alibek » 24.03.2006 (Пт) 13:55

Публичные типы могут быть только в ActiveX EXE (если память не подводит). Выполняется ли это условие?
Если нет, то можно вместо типов использовать классы.
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение tyomitch » 24.03.2006 (Пт) 13:59

Подводит.
Они могут быть в публичных классах, и не могут быть в модулях.
Изображение

optimizm
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.03.2006 (Пт) 13:28

Сообщение optimizm » 24.03.2006 (Пт) 14:14

Т.е. нельзя создать dll использующее такие типы данных?

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

Сообщение tyomitch » 24.03.2006 (Пт) 14:25

Нужно перенести объявление этого типа в какой-нибудь класс.
Изображение

optimizm
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.03.2006 (Пт) 13:28

Сообщение optimizm » 24.03.2006 (Пт) 14:41

Я пытался, но в классе он обьявляется только как private иначе тоже пояляется ошибка
Cannot define a public user-defined type within an object module

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

Сообщение tyomitch » 24.03.2006 (Пт) 14:49

Класс, в который ты должен перенести это объявление, сам должен быть публичным.
Изображение

optimizm
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.03.2006 (Пт) 13:28

Сообщение optimizm » 24.03.2006 (Пт) 15:12

А каким образом в VB можно класс сдлеать таковым. Здесь вроде как вообще никакого описания класса в принципе не идет?

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

Сообщение Ennor » 24.03.2006 (Пт) 15:37

В свойствах класса (которые по F4 появляются) см. свойство Instancing. Тебе нужен любой Public... , но лучше конечно почитать, что какой значит, ибо от этого многое зависит.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.03.2006 (Пт) 15:39

В принципе, имеет смысл выделить класс в дереве и потом в редактор свойств посмотреть.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

optimizm
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.03.2006 (Пт) 13:28

Сообщение optimizm » 24.03.2006 (Пт) 15:43

У меня VB5 может поэтому что не то?
Есть только один PublicNotCreatable. Но я там все перебробовал. Никакого результата это не дало.

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

Сообщение tyomitch » 24.03.2006 (Пт) 19:11

optimizm, ты чего-то путаешь.
Если ты создаёшь ActiveX DLL, значит по крайней мере один публичный класс у тебя есть. Иначе VB откажется компилировать твой проект.

Вот в этот публичный класс и засунь своё объявление.
Изображение

optimizm
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.03.2006 (Пт) 13:28

Сообщение optimizm » 27.03.2006 (Пн) 7:16

А что я здесь могу путать. Создю для теста пустой класс с одним лишь обьявлением.
Код: Выделить всё

Type upol_l_struct
   nls_u As Long
   fio_u As String ' * 61
   seria_u As String ' * 11
   ndok_u As String ' * 10
   kemv_u As String ' * 40
   adrs_u As String '* 70
   post_u As String '* 70
   dover_u As String '* 10
   vid_u As Long
   datbeg_u As Long
   datend_u As Long
   prizn_u As Long
   grag_u As Long
   viddok_u As Long
   datav_u As Long
   prava As Long
   null_upol As Long
End Type

Выдает ошибку Cannot define a public user-defined type within an object module.

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

Сообщение tyomitch » 27.03.2006 (Пн) 11:20

класс должен быть публичным!!
Изображение

optimizm
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.03.2006 (Пт) 13:28

Сообщение optimizm » 30.03.2006 (Чт) 13:44

Так он публичный. Иначе, как вы сказали, он бы у меня не компилировался. Но нет, если убрать этот Type. То все нормально компилируется, а класс единственный. Вывод он публичный. Так что его публичность в данном вопросе никак не помогает.

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

Сообщение tyomitch » 30.03.2006 (Чт) 14:25

optimizm писал(а):Так он публичный. Иначе, как вы сказали, он бы у меня не компилировался. Но нет, если убрать этот Type. То все нормально компилируется, а класс единственный. Вывод он публичный.

Ну, значит в VB5 такое не поддерживалось.
Он у меня больше не стоит, так что проверить не могу.
Вывод: переходи на VB6 :-)
Изображение

CORBA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 22.11.2003 (Сб) 13:41
Откуда: Ukraine-Crimea-Feodosia

Сообщение CORBA » 30.03.2006 (Чт) 14:52

tyomitch писал(а):Ну, значит в VB5 такое не поддерживалось.
Он у меня больше не стоит, так что проверить не могу.
Вывод: переходи на VB6 :-)


Чего уж тогда мелочится лучше на VB .Net :)
У каждой сложной задачи есть множество простых для понимания, но неправильных решений.

optimizm
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.03.2006 (Пт) 13:28

Сообщение optimizm » 30.03.2006 (Чт) 15:00

Уже подумываю:-)
А скажите есть ли замена типа Any в VB6 и Vb.NET?
Скажем есть у меня такое обьявление
Declare Function d_crwrite Lib "CRDM32.dll" (ByVal field As Long, ByRef fDATA As Any, ByVal hDB As Long) As Integer
Как его реализовать там?

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

Сообщение alibek » 30.03.2006 (Чт) 15:01

В VB6 есть Any, применимо только в декларациях (Declare).
Lasciate ogni speranza, voi ch'entrate.

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 30.03.2006 (Чт) 17:00

В VB.NET
Код: Выделить всё
<MarshalAs(UnManagedType.AsAny)>
Моду создают модоки, а распространяют модозвоны.

optimizm
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.03.2006 (Пт) 13:28

Сообщение optimizm » 31.03.2006 (Пт) 9:03

Всем спасибо, будем переходить:-)

Smert
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 07.04.2006 (Пт) 18:47
Откуда: Молдова,Бельцы

Сообщение Smert » 23.04.2006 (Вс) 20:15

А насчет класса:как-то ВБ его компилирует но переведи на русский язык PublicNotCreatable
(Это значит ПУБЛИЧНЫЙ НЕ СОЗДАВАЕМ :twisted:!!!)

...или НЕ СОЗДАЁТСЯ! но смысл не меняется!!!
Пап, а что такое ВБ?
Cынок, это просто фантастика!

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

Сообщение tyomitch » 23.04.2006 (Вс) 20:26

Smert, чем тебе не давал покоя топик месячной давности?
Изображение


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

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

Сейчас этот форум просматривают: Google-бот, Majestic-12 [Bot] и гости: 121

    TopList  
cron