Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > как задать переменной адресс подпрограмм


Автор: Рома 13.10.2005, 14:03
как задать переменной адресс подпрограммы а затем вызвать ее через "CALL peremenaja" в vb6. smile 0

Автор: Exception 13.10.2005, 14:19
не понял вопроса. Если надо вызвать процедуру, это делается так:
Код

Sub Main
SayHello 'Вызываем процедуру SayHello
End Sub
'---------
Sub SayHello()
Msgbox "Hello!"
End Sub

или так:
Код

Sub Main
Call SayHello() 'Вызываем процедуру SayHello
End Sub
'---------
Sub SayHello()
Msgbox "Hello!"
End Sub

а вообще покопайся в литературе и подучи язык, прежде чем задавать такие вопросы на форуме smile

Автор: Рома 14.10.2005, 11:51
Sub Main
peremenaja = Sub SayHello()
Call peremenaja 'Вызываем процедуру SayHello, но через переменную и только так
End Sub
'---------
Sub SayHello()
Msgbox "Hello!"
End Sub

Но понятное дело так(в таком виде) В VB6.0 не работает.
А как такое сделать я не знаю.
Кто может помогите.

Автор: Voldemar2004 14.10.2005, 12:42
Код

Option Explicit

Private Sub Hell()
MsgBox "Hell! :)"
End Sub

Private Sub Command1_Click()
Hell
End Sub

Добавлено @ 12:45
Или ты чего хочешь-то? Чтобы какой-то переменной в процедуре присваивалось значение?
Цитата
Call peremenaja 'Вызываем процедуру SayHello, но через переменную и только так
Чем это тебя не устраивает?

Автор: Plamenk 14.10.2005, 15:37
Я знаю только, как вызвать функцию по имени: CallByName(...).
А по адрессу ... это не Си smile

А ... есть ещё AddressOf, которая получает адресс функции, но это используется в основном для CallBack вызовов.

Автор: Exception 14.10.2005, 16:45
Рома почему именно так тебе надо?!

Автор: cardinal 14.10.2005, 19:35
http://forum.vingrad.ru/index.php?showtopic=16767

Автор: Рома 15.10.2005, 09:17
Есть таблица действий (и их очень много, к примеру 200 значений) и каждое действие ведет к определенной подпрограмме.
Т. е. я сделал тото ,присвоил этому действию N номер и по этому N номеру из таблици берется указатель на опред. подпрограмму.
Грубо говоря:
N=1
peremenaja = tabinfo(N) 'tabinfo(1)=Sub seyhello()
call peremenaja
А если:
N=2
peremenaja = tabinfo(N) 'tabinfo(2)=Sub exit()
call peremenaja

Понятно , что через оператор Case, очень неудобно.

И так далее.

И потом очень выглядит красиво,мало занимает места и работает быстро:

Private Sub CallSubX(N)
peremenaja = tabinfo(N)
call peremenaja
End Sub


Может через функции DirectX можно задать переменной адресс подпрограммы, а
затем перейти к ней по Call peremenaja.

Автор: Exception 15.10.2005, 09:52
да НЕЛЬЗЯ так делать!
тебе ведь сказали: юзай CallByName! в чём проблема?!

Автор: cardinal 15.10.2005, 15:26
Посмотри на этот пример...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)