Как запустить функцию, если есть ее название в виде String?

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

Как запустить функцию, если есть ее название в виде String?

Сообщение echo » 18.10.2005 (Вт) 5:36

Когда то использовал в Accesse метод Application.Run вот в таком виде для запуска функций:
Код: Выделить всё
makros = Combobox1.Value
Application.Run makros


Попробовал то же самое в VB6 и получаю "Run-time error '1004'". Call, насколько я понял, тоже так не умеет. Поискал здесь и в MSDN тоже ничего подходящего не нашел.
Если кто знает, подскажите можно ли запустить процедуру если есть ее имя в виде String или дайте наводку, где посмотреть, плз.
Душа болит... А лечишь её - печень болит!

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 18.10.2005 (Вт) 6:44

Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

echo
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 26.01.2005 (Ср) 8:25
Откуда: Хабаровск

Сообщение echo » 18.10.2005 (Вт) 7:44

FAKK2
Насколько я понял эта функция используется
чтобы получить или установить свойство, или вызвать метод во время выполнения, используя их имя в текстовом формате.
The CallByName function is used to get or set a property, or invoke a method at run time using a string name.

а мне нужно обратиться к самостоятельной процедуре, находящейся в отдельном модуле. Типа
Код: Выделить всё
Sub SayHello()
msgbox "Hello"
End Sub

Если это можно сделать с помощью этой функции, то я видимо не догнал как. Поясните, плз.
Душа болит... А лечишь её - печень болит!

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

Сообщение alibek » 18.10.2005 (Вт) 7:53

Никак нельзя сделать (в скомпилированной программе), используй Select Case.
Lasciate ogni speranza, voi ch'entrate.

echo
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 26.01.2005 (Ср) 8:25
Откуда: Хабаровск

Сообщение echo » 18.10.2005 (Вт) 8:44

alibek
20 Select'ов с вариантом дальнейшого их размножения - неприкольно...
А возможно как то получить список процедур в модуле? (перебрал их по именам сравнил со стрингом, если похоже - запустил)
Душа болит... А лечишь её - печень болит!

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

Сообщение alibek » 18.10.2005 (Вт) 8:59

В модуле -- нельзя.
При подключении TLI можно, но не для скомпилированного варианта.
Lasciate ogni speranza, voi ch'entrate.

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 18.10.2005 (Вт) 10:11

Может список процедур в инишник запихнуть? :о)
Пора уже всем хорошим людям собраться и убить всех плохих людей.

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

Сообщение GSerg » 18.10.2005 (Вт) 11:28

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

echo
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 26.01.2005 (Ср) 8:25
Откуда: Хабаровск

Сообщение echo » 18.10.2005 (Вт) 15:13

GSerg
Была такая мысль. Но как? То что мне приходит в голову, получается вариантом на тему Select Case'a.
Если ты представляешь, как это можно сделать, поделись идеей?
Душа болит... А лечишь её - печень болит!

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

Сообщение alibek » 18.10.2005 (Вт) 15:22

Функции (методы) класса вызываются по CallByName.
Lasciate ogni speranza, voi ch'entrate.

echo
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 26.01.2005 (Ср) 8:25
Откуда: Хабаровск

Сообщение echo » 18.10.2005 (Вт) 15:27

alibek
Ну всё - разжевали и в рот положили! :lol:
Всем спасибо.
Отдельное спасибо alibek и GSerg
Завтра попробую.
Душа болит... А лечишь её - печень болит!


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

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

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

    TopList