Библиотека в VB - передача объекта в качестве параметра

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

Библиотека в VB - передача объекта в качестве параметра

Сообщение Adept » 18.07.2005 (Пн) 12:06

Появилась такая проблема...
Мне нужно передать в функцию, которая в библиотеке, в качестве параметра ListBox...
В DLL'ке я написал:

Public Function Sort_By_WordLenght (ListBox1 As Listbox) as integer 'сортируем слова по длине
...
End Function

Она не захотела компилироваться. Тогда я описал ListBox1 As Object,
библиотека скомпилировалась, но теперь при вызове функции из программы
возникает ошибка - не найдена точка входа (Entry Point)... =(

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

Сообщение GSerg » 18.07.2005 (Пн) 12:19

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

Adept
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 21.02.2005 (Пн) 7:59
Откуда: Питер

Сообщение Adept » 18.07.2005 (Пн) 13:04

1. Создаю новый проект - ActiveX DLL
2. В нём пишу:
Public Function Sort_By_WordLenght (ListBox1 As Listbox) as integer 'сортируем слова по длине
...
End Function
Выдаёт ошибку - какие-то проблемы или с Public/Private модулем,
или с возвращением результата... Короче, отказывается даже компилироваться... =(

Но если написать:
Public Function Sort_By_WordLenght (ListBox1 As Object) as integer 'сортируем слова по длине
...
End Function

то он компилится, но ругается при вызове функции... =(

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

Сообщение GSerg » 18.07.2005 (Пн) 13:16

И как же мы вызываем функцию? :)
Предвижу ответ, но всё же? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Adept
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 21.02.2005 (Пн) 7:59
Откуда: Питер

Сообщение Adept » 18.07.2005 (Пн) 13:54

Сейчас начал делать всё это заново и, кажется, понял!
Короче, объект в параметре передаётся нормально - ф-я правильно возвращает число записей в ListBox'е (ListCount)! А после сортировки значит надо возвращать массив строк в нужной последовательности!..

P.S. Вызываю ф-ю :)
Код: Выделить всё

Dim MyClass As New Class1, i%
Private Sub Form_Load()
For i = 1 To 10
    List1.AddItem "111"
Next i
i = MyClass.LineNum(List1)
MsgBox i
End
End Sub

А в Class1.cls:
Код: Выделить всё

Public Function LineNum(ListBox1 As Object) As Integer
LineNum = ListBox1.ListCount
End Function

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

Сообщение GSerg » 18.07.2005 (Пн) 14:19

Что значит - надо возвращать массив строк? Где и зачем? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Adept
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 21.02.2005 (Пн) 7:59
Откуда: Питер

Сообщение Adept » 18.07.2005 (Пн) 14:52

Мда... Похоже я прирождённый флудер... :D
Ты прав - возвращать ничего не надо :oops:, но подпрограмму сделать у меня не получилось...
Код: Выделить всё

Public Function Sort_by_Len(ListBox1 As Object) As Integer 'Bubble-sort(?)
Dim i As Integer, j As Integer
For i = 1 To ListBox1.ListCount
For j = 1 To ListBox1.ListCount
    If Len(ListBox1.List(j)) > Len(ListBox1.List(j - 1)) Then
        tmp$ = ListBox1.List(j)
        ListBox1.List(j) = ListBox1.List(j - 1)
        ListBox1.List(j - 1) = tmp$
    End If
Next j
Next i
End Function

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

Сообщение GSerg » 18.07.2005 (Пн) 17:08

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

Adept
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 21.02.2005 (Пн) 7:59
Откуда: Питер

Сообщение Adept » 30.07.2005 (Сб) 16:08

Всё работает! Просто у меня руки не оттуда растут! :)
Спасибо за наводящие вопросы! :)


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

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

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

    TopList