powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Процедуры с параметрами
14 сообщений из 14, страница 1 из 1
Процедуры с параметрами
    #38864241
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день уважаемые!
Проведите пожалуйста ликбез(( Вот простейшая процедура с параметрами. Она передает переменным VB,NB,Vtek значения , но как только переходит в процедуру Moduli_rascheta, эти переменные становятся =0((( Есть возможность их объявить в процедуре Raschet_na_deni так, чтобы они были видны и в др.?

Код: vbnet
1.
2.
3.
4.
5.
6.
Private Sub Raschet_Click()
   Raschet_na_deni VelVB, VelNB, 0
End Sub
Private Sub Raschet_na_deni(VB As Single, NB As Single, Vtek As Single)
         Moduli_rascheta
End Sub
...
Рейтинг: 0 / 0
Процедуры с параметрами
    #38864262
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronПроведите пожалуйста ликбезИзучите, наконец, уже тему "область видимости переменной". Зачем повторять учебник в топике?

vdekameronЕсть возможность их объявить в процедуре Raschet_na_deni так, чтобы они были видны и в др.?нет.
передавайте их явно
...
Рейтинг: 0 / 0
Процедуры с параметрами
    #38864266
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronно как только переходит в процедуру Moduli_rascheta, эти переменные становятся =0эти переменные не становятся равны нулю, они вообще не видны в процедуре Moduli_rascheta. Чтобы это понять, используйте Option Explicit, я же уже просил об этом. Тогда и вопросы ненужные отпадут сами собой.
...
Рейтинг: 0 / 0
Процедуры с параметрами
    #38864268
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Спасибо!
...
Рейтинг: 0 / 0
Процедуры с параметрами
    #38864278
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я их объявил явно вверху и в процедуре. сделал - Option explicit. И когда переходит в процедуру Moduli_rascheta они именно равны 0
...
Рейтинг: 0 / 0
Процедуры с параметрами
    #38864284
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronЯ их объявил явно вверху и в процедуре. сделал - Option explicit. И когда переходит в процедуру Moduli_rascheta они именно равны 0Не верим на слово, верим коду.
...
Рейтинг: 0 / 0
Процедуры с параметрами
    #38864321
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyНе верим на слово, верим коду.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Option Explicit
Dim VB As Single
Dim NB As Single
Dim Vtek As Single
Dim VelVB As Single
Dim VelNb As Single
Dim Napor As Single
Private Sub Raschet_Click()
   Vtek = 0
   VelNb = 1
   VelVB = 2
       Raschet_na_deni VelNb, VelVB, 0
End Sub
Private Sub Raschet_na_deni(NB As Single, VB As Single, Vtek As Single)
        Moduli_rascheta
End Sub
Private Sub Moduli_rascheta()
    Dim dll2 As Object
         On Error Resume Next
             Set dll2 = CreateObject("CalcMod.Class1")
                If Err.Number <> 0 Then
              End If
           Napor = Format(dll2.MyfuncVB(VB) - dll2.MyfuncNB(NB), "0.00")
End Sub
...
Рейтинг: 0 / 0
Процедуры с параметрами
    #38864331
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эта переменная сама по себе
vdekameron
Код: vbnet
1.
Dim VB As Single

эта переменная сама по себе
vdekameron
Код: vbnet
1.
Private Sub Raschet_na_deni(NB As Single, VB As Single, Vtek As Single)

Это РАЗНЫЕ переменные, они просто имеют одинаковые имена. Можешь дать им разные имена, чтобы было понятнее
...
Рейтинг: 0 / 0
Процедуры с параметрами
    #38864334
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameron
Код: vbnet
1.
           Napor = Format(dll2.MyfuncVB(VB) - dll2.MyfuncNB(NB), "0.00")

Нажми правой кнопкой на NB и выбери пункт Definition. VB покажет тебе, где объявлена твоя переменная
...
Рейтинг: 0 / 0
Процедуры с параметрами
    #38864340
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proони просто имеют одинаковые имена.
Извините конечно, что раздражаю вас простейшими вопросами, но как это может быть, разве в таких случаях VB6 не должен ругаться, что мол совпадение имен.
...
Рейтинг: 0 / 0
Процедуры с параметрами
    #38864346
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не извиню, я же сказал Shocker.ProИзучите, наконец, уже тему "область видимости переменной". Зачем повторять учебник в топике?, а вы опять пытаетесь получить учебник на форуме. Поведение переменных с одинаковыми именами в разных областях видимости четко регламентировано
...
Рейтинг: 0 / 0
Процедуры с параметрами
    #38864353
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProНе извиню, я же сказал

Казнить нельзя, миловать)

У меня нету этого учебника. Я только ЗА почитать. Говорил уже вам что сейчас Лукина читаю. Там такого нет.
...
Рейтинг: 0 / 0
Процедуры с параметрами
    #38864375
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок. Если имена переменных пересекаются, приоритет имеет переменная с наименьшей областью видимости. То есть внутри процедуры Raschet_na_deni под VB будет подразумеваться параметр процедуры, а не переменная модуля с тем же именем.

Глобальный совет. Сведите использование глобальных переменных к минимуму, в идеале их не должно быть вообще (разве что глобальные настройки, глобальные константы типа Пи, но не рабочие переменные).

Каждая процедура в идеале должна работать как черный ящик - получать на входе параметры и выдавать наружу результат (если он есть), она не должна зависеть от каких-то глобальных переменных и ничего не должна знать о том, кто ее вызывает. То есть процедуре должно быть все равно, в каком проекте она находится и кто ее вызвал, ее задача принять данные и выдать результат.
...
Рейтинг: 0 / 0
Процедуры с параметрами
    #38864438
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProГлобальный совет. Сведите использование глобальных переменных к минимуму
Ну значит я изначально сделал правильно! А сейчас просто прочитал в этой книге про процедуры с параметрами и решил переделать.
Спасибо за хороший совет!
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Процедуры с параметрами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]