Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как задать переменной адресс подпрограмм, как задать переменной адресс подпрограмм 
:(
    Опции темы
Рома
Дата 13.10.2005, 14:03 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











как задать переменной адресс подпрограммы а затем вызвать ее через "CALL peremenaja" в vb6. smile 0
  Вверх
Exception
Дата 13.10.2005, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



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

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
PM   Вверх
Рома
Дата 14.10.2005, 11:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











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

Но понятное дело так(в таком виде) В VB6.0 не работает.
А как такое сделать я не знаю.
Кто может помогите.
  Вверх
Voldemar2004
Дата 14.10.2005, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Код

Option Explicit

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

Private Sub Command1_Click()
Hell
End Sub

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



--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Plamenk
Дата 14.10.2005, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 258
Регистрация: 18.2.2003

Репутация: нет
Всего: 3



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

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

Это сообщение отредактировал(а) Plamenk - 14.10.2005, 15:41
PM MAIL   Вверх
Exception
Дата 14.10.2005, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Рома почему именно так тебе надо?!
PM   Вверх
cardinal
Дата 14.10.2005, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99





--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Рома
Дата 15.10.2005, 09:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Есть таблица действий (и их очень много, к примеру 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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



да НЕЛЬЗЯ так делать!
тебе ведь сказали: юзай CallByName! в чём проблема?!
PM   Вверх
cardinal
Дата 15.10.2005, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Посмотри на этот пример...

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  howto_callbyname.zip 4,99 Kb


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.