Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Процедуры с параметрами / 14 сообщений из 14, страница 1 из 1
27.01.2015, 14:07
    #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
27.01.2015, 14:22
    #38864262
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедуры с параметрами
vdekameronПроведите пожалуйста ликбезИзучите, наконец, уже тему "область видимости переменной". Зачем повторять учебник в топике?

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

Спасибо!
...
Рейтинг: 0 / 0
27.01.2015, 14:32
    #38864278
vdekameron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедуры с параметрами
Я их объявил явно вверху и в процедуре. сделал - Option explicit. И когда переходит в процедуру Moduli_rascheta они именно равны 0
...
Рейтинг: 0 / 0
27.01.2015, 14:34
    #38864284
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедуры с параметрами
vdekameronЯ их объявил явно вверху и в процедуре. сделал - Option explicit. И когда переходит в процедуру Moduli_rascheta они именно равны 0Не верим на слово, верим коду.
...
Рейтинг: 0 / 0
27.01.2015, 14:49
    #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
27.01.2015, 14:53
    #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
27.01.2015, 14:54
    #38864334
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедуры с параметрами
vdekameron
Код: vbnet
1.
           Napor = Format(dll2.MyfuncVB(VB) - dll2.MyfuncNB(NB), "0.00")

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

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

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

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

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


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