2 / 2 / 0
Регистрация: 02.10.2011
Сообщений: 41
1

Как объявить глобальную переменную

04.10.2011, 10:13. Показов 38837. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно вопрос может показаться глупым, но я прочитал много статей и так и не нешёл ответ.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.10.2011, 10:13
Ответы с готовыми решениями:

Как объявить глобальную переменную
При объявление Public ничего не происходит Public Sub Form1_Load(ByVal sender As System.Object,...

Можно ли объявить переменную как модуль
Доброго времени суток. Сразу перейду к проблеме. Так вот, есть модуль (самый обычный модуль,...

Как объявить переменную, принимающую дробные значения
Здравствуйте. Написал код. Dim intInfo1 As Integer Dim intInfo2 As...

Как объявить переменную, содержащую еще две переменных?
Здравствуйте! Как записать переменную которая содержит ещё 2 переменные? Например, переменная...

17
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
04.10.2011, 10:17 2
GameBoy, если переменная нужна в одной форме, то вверху ее и объявляем, после
VB.NET
1
Class Form1
Например,
VB.NET
1
Dim N As Integer
Если переменная нужна во всем приложении, то ее можно объявить в модуле. Создаем модуль и объявляем:
VB.NET
1
Dim N As Integer
Если модуль нарушает религиозные убеждения, то объявляем в какой - либо форме, например, Form1
VB.NET
1
Public N As Integer
B получаем к ней доступ из других форм, указав еще и объект, где объявлена эта переменная
VB.NET
1
Form1.N
4
753 / 552 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
04.10.2011, 10:30 3
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Памирыч Посмотреть сообщение
Если переменная нужна во всем приложении, то ее можно объявить в модуле. Создаем модуль и объявляем:
VB.NET
1
Dim N As Integer
Если объявить так, то переменная в приложении будет недоступна. В модуле все переменные нужно публиковать, иначе они могут использоваться для функций непосредственной расположенных в самом модуле.
VB.NET
1
2
3
4
Module Module1
    Dim a As String
    Public g As String
End Module
g - видна во всем приложении
a - только на уровне модуля
7
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
04.10.2011, 10:34 4
gitarillo, верно
1
1710 / 1198 / 227
Регистрация: 23.12.2010
Сообщений: 1,527
04.10.2011, 10:39 5
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Памирыч Посмотреть сообщение
Если модуль нарушает религиозные убеждения, то объявляем в какой - либо форме, например, Form1
Код vb.net:
Public N As Integer
достаточно Friend, т.к. паблик открывает доступ к переменной сторонним приложениям.
8
2 / 2 / 0
Регистрация: 02.10.2011
Сообщений: 41
05.10.2011, 06:02  [ТС] 6
Спасибо всем
0
32 / 32 / 3
Регистрация: 20.07.2011
Сообщений: 407
05.10.2011, 13:13 7
Юпатов Дмитрий, можно ли елементарный пример использования friend?
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
05.10.2011, 13:18 8
abbat81,
VB.NET
1
Friend N As Integer
1
9 / 9 / 0
Регистрация: 03.10.2011
Сообщений: 52
06.10.2011, 14:32 9
xD

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

Во-первых (я нубас в net), как его сделать стартовым? Ну, это так, для сведения. Помню, в VB4 делал.
Во-вторых, как этот модуль правильно прописать (объявить), чтобы из любой формы были доступны подпрограммы из него?

ЗЫ Просто пишу прогу, которая будет работать с несколькими формами - соответственно мне из любой из этих форм мне будет нужен доступ ко всем переменным.
0
753 / 552 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
06.10.2011, 15:09 10
Цитата Сообщение от DarKxXxLorD Посмотреть сообщение
Во-первых (я нубас в net), как его сделать стартовым?
Это зависит от типа создаваемого приложения. Если тип приложения Win Forms то стартануть оно может только с конкртеной формы, выбранной в свойствах проекта.
Для типа например служба, можно выбрать процедуру в модуле.

Цитата Сообщение от DarKxXxLorD Посмотреть сообщение
Во-вторых, как этот модуль правильно прописать (объявить), чтобы из любой формы были доступны подпрограммы из него?
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
Module Module1
    Public Sub Main()
    End Sub
 
    Friend Function FivePow(ByVal x As Double)
        Try
            Return x ^ 5
        Catch ex As Exception
            MsgBox(ex.ToString)
            Return 0
        End Try
    End Function
End Module
Достаточно модификатора Friend для доступа из любой формы к этой функции.
2
9 / 9 / 0
Регистрация: 03.10.2011
Сообщений: 52
10.10.2011, 08:25 11
VB.NET
1
2
  Public Sub Main()
    End Sub
а вот это обязательно?
0
753 / 552 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
10.10.2011, 09:17 12
да. ибо стартануть можно только с нее. Она является начальной точкой в стеке вызовов.
0
2 / 2 / 0
Регистрация: 02.10.2011
Сообщений: 41
12.10.2011, 12:20  [ТС] 13
Я не понял, можете объяснить конкретно, что и куда вставлять, а то я попробовал, но N - всё равно локальная, а не глобальная. Что не так, и как надо сделать?
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Class Form1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Start()
    End Sub
    Public Sub Main()
        Dim N As Integer = 0
    End Sub
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim N As Integer
        Label1.Text = N + 1
    End Sub
End Class
0
32 / 32 / 3
Регистрация: 20.07.2011
Сообщений: 407
12.10.2011, 12:22 14
GameBoy,

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Public Class Form1
 
    Public N As Integer = 0
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Start()
    End Sub
    Public Sub Main()
        
    End Sub
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim N As Integer
        Label1.Text = N + 1
    End Sub
End Class
0
753 / 552 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
12.10.2011, 12:22 15
Цитата Сообщение от GameBoy Посмотреть сообщение
Я не понял
Видимо так.
Переменную объявляй в модуле. Переобъявлять ее не нужно в классе формы.
0
2 / 2 / 0
Регистрация: 02.10.2011
Сообщений: 41
12.10.2011, 12:23  [ТС] 16
gitarillo, я такой нуб, что мне надо показать.
0
753 / 552 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
12.10.2011, 12:27 17
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Public Class Form1
    Friend N As Integer = 0
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Start()
    End Sub
    
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
           N += 1
          Label1.Text = N
    End Sub
End Class
1
2 / 2 / 0
Регистрация: 02.10.2011
Сообщений: 41
12.10.2011, 12:41  [ТС] 18
gitarillo, ты гений!!!
0
12.10.2011, 12:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2011, 12:41
Помогаю со студенческими работами здесь

Как объявить переменную, доступную не то, что в другой форме, а в другом exe
Всем привет. Я умею объявлять глобальные переменные внутри одного exe. Тоесть если в нем есть...

Как встроить в сборку на C# глобальную переменную используя CIL?
Знаю, что можно воспользоваться статическим свойством класса для этих целей, но читал что CIL...

Как переключить глобальную раскладку клавиатуры с текущей на альтернативную?
Нужно сделать это не зная какие языки в системе доступны. То есть не указывая ни номера страницы...

Как объявить глобальную переменную?
Угораздило установить Офис2003... :-/ неужели нельзя больше использовать необъявленные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru