Поиграть с переменными

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

Поиграть с переменными

Сообщение AnarCky » 12.12.2006 (Вт) 20:44

Вот такая еще вещица.
Есть одна переменная intN As Integer в форме TableNastr. Пусть она равна 10. А в форме Form1 - переменная intM As Integer. Она равна 9. Во время процедура из intN вычитается один. А дальше мне надо их сравнить. Но сделать это не получается т.к. в каждой форме надо ее заново объявлять, и это получается уже другая переменная. Как можно сравнить именно две исходные? Там дальше по сценарию, если они равны, то вызывается процедура, если нет, то ниче не происходит.
Помогите пожалуйста!
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..

August
Бывалый
Бывалый
 
Сообщения: 209
Зарегистрирован: 25.08.2006 (Пт) 10:48
Откуда: C сибири

Сообщение August » 12.12.2006 (Вт) 21:45

в поиск

ЗЫ Public что-нить тебе говорит?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 13.12.2006 (Ср) 8:12

Скорее уж автору должно что-то сказать Shared, а не Public

Added: нды... писание Static вместо Shared это все от вреда прогания на нескольких языках одновременно
Последний раз редактировалось Viper 13.12.2006 (Ср) 12:36, всего редактировалось 1 раз.
Весь мир матрица, а мы в нем потоки байтов!

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 13.12.2006 (Ср) 11:48

а еще точнее Friend Shared для Visual Basic .Net

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

Сообщение AnarCky » 18.12.2006 (Пн) 12:39

Прошу прощения за молчание.

Public мне о чем-нибудь говорит (в отличие от Shared и Friend Shared).
Но когда я объявляю Public intN As Integer в одной форме, то при попытке использования intN в другой форме он мне подчеркивает ее синей волнистой и пишет "Name "intN" isn't declared". :?:

А про Shared и Friend Shared я ниче не слышал... Буду рад если кто-нить мне объяснит.
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 18.12.2006 (Пн) 15:05

Shared - означает, что переменная является общей для всех экземпляров данного класса. Shared Friend означает, что она доступна только в пределах данного проекта.
Весь мир матрица, а мы в нем потоки байтов!

ufobject
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 23.11.2006 (Чт) 16:42

Сообщение ufobject » 04.01.2007 (Чт) 14:31

народ, ну что вы человеку мозги мутите??? проще нельзя чтоли объяснить? не судьба? Короче, AnarCky, если ты хочешь обратиться к переменной A (public A as integer) фотрмы form1 из функции пренадлежащей form2, пишешь form1.A. т.е. сначала пишешь форму(класс) а потом через точку обращаешься к ее переменной. Так же можено обращаться и к функциям и тп.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.01.2007 (Чт) 15:48

Так ведь это только в 2005 так? :roll:
Изображение

ufobject
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 23.11.2006 (Чт) 16:42

Сообщение ufobject » 05.01.2007 (Пт) 1:11

не думаю, тоже самое было и в vb6. Да и вообще, тут дело в классах. Так как в 2005 форма реализована более явно как класс (в смысле по коду видно :) ) в отличае от vb6 то обращение к переменной класса и произодится как к члену класса (непосредственно через его имя). Но в vb6 обращения производились точно так же.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.01.2007 (Пт) 1:13

Да, то же самое было и в VB6. Но зато в 2003 не так :-)
Изображение

ufobject
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 23.11.2006 (Чт) 16:42

Сообщение ufobject » 05.01.2007 (Пт) 1:33

я делаю именно так в 2005. За 2003 не отвечаю.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.01.2007 (Пт) 1:38

Вот поэтому я и отвечаю про 2003, что в нём не так :-)
Автор не указал, какая версия у него, так что вариант, работающий только в 2005, может ему не подойти.
Изображение

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 05.01.2007 (Пт) 7:15

ufobject писал(а):народ, ну что вы человеку мозги мутите??? проще нельзя чтоли объяснить? не судьба? Короче, AnarCky, если ты хочешь обратиться к переменной A (public A as integer) фотрмы form1 из функции пренадлежащей form2, пишешь form1.A. т.е. сначала пишешь форму(класс) а потом через точку обращаешься к ее переменной. Так же можено обращаться и к функциям и тп.


Оно конечно в VB2005 возможно, но этот метод является наглым нарушением принципов ООП и не должен использоваться. Возврат его в VB2005 на мой взгляд является не самой лучшей идеей Microsoft. И уж тем более не стоит советовать это новичкам.
Весь мир матрица, а мы в нем потоки байтов!

ufobject
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 23.11.2006 (Чт) 16:42

Сообщение ufobject » 05.01.2007 (Пт) 13:53

мне кажется это спорный вопрос. Почему этот метод является неправельным? из за глобальной переменной? В vb2005 я четко наблюдаю склонность к классам, а классы как известно пошли с си. В си такое обращение к переменной класса вполне нормальное дело. В чем же тут неудобство или проблема? Поясни если я не прав в чем-то.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.01.2007 (Пт) 14:01

Неудобство и проблема в том, что эти переменные одновременно оказываются и статическими (связываемыми по имени класса), и экземплярными (связываемыми по ссылке на экземпляр класса). Потому что в 2005 экземпляр формы как класса можно создать точно так же, как в 2003.

Кроме того, что классы пошли не с си (их там даже и нет ;-)), в C++ (как и во всех остальных языках, включая VB.net) члены класса по умолчанию не-статические. Чтобы объявить их статическими, нужно явно писать слово static (в VB.net -- Shared).
Изображение

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 06.01.2007 (Сб) 1:36

Классы пошли, если не ошибаюсь, с java.
А по поводу вопроса - присоединяюсь к мнению об использовании Shared [Friend]
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 06.01.2007 (Сб) 7:29

VB_D3D_Денис писал(а):Классы пошли, если не ошибаюсь, с java.


это ты долго думал или просто так сказал?

Java разрабатывается с начала 90-х, C++ родом из 1985 года, а классы уродилися еще раньше (Smalltalk это вроде конец 70-х. Simula 67 - конец 60-х. Правда не уверен, что в Simula 67 были классы, но он считается первым объектно-ориентированным языком. За истину в конечной инстанции не претендую.).
Весь мир матрица, а мы в нем потоки байтов!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.01.2007 (Сб) 12:13

!Viper! писал(а):Правда не уверен, что в Simula 67 были классы

Википедия говорит, что были.
http://en.wikipedia.org/wiki/Simula писал(а):Simula 67 introduced objects, classes, subclasses.
Изображение

ufobject
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 23.11.2006 (Чт) 16:42

Сообщение ufobject » 08.01.2007 (Пн) 21:00

просветили на счет классов Ж) Благодарствую.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 44

    TopList  
cron