Назначать переменную или нет?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
M@SKIT
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 10.04.2006 (Пн) 11:10
Откуда: Одесса

Назначать переменную или нет?

Сообщение M@SKIT » 06.05.2006 (Сб) 16:33

Вопрос такой! есть ли серьезная разница в использовании таких конструкций:

Код: Выделить всё
dim x as integer, y as integer, z as integer
x=val(text1.text)
y=val(text2.text)
z=x+y
..............................................................

И
..............................................................
Код: Выделить всё
Dim z  as integer
z= val(text1.text)+val(text2.text)
..............................................................

То есть я имею ввиду, целесообразно ли в таких случаях использовать дополнительные переменные ???

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 06.05.2006 (Сб) 16:38

Если планируешь делать что то с text1.text или text2.text кроме этой строчки в данном блоке кода, то первый вариант. Иначе - второй.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 06.05.2006 (Сб) 16:39

Если переменные x и y используются только в этом месте кода, то нецелесообразно.

M@SKIT
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 10.04.2006 (Пн) 11:10
Откуда: Одесса

Сообщение M@SKIT » 06.05.2006 (Сб) 16:54

RayShade писал(а):Если планируешь делать что то с text1.text или text2.text кроме этой строчки в данном блоке кода, то первый вариант. Иначе - второй.


Ну допустим у меня программа где несколько разных процедур воздействуют на один textbox и все вместе берут данные из одних и тех же textbox-ов. Тогда что лучше объявлять переменную Public или ссылаться непосредственно на Textbox?? (Вопрос общий касается, естественно не только TextBox. )

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 06.05.2006 (Сб) 17:50

В любом случае лучше ссылаться на тексБокс. Если у тебя в процедурах по паре строчек, действующих с этим контролом. Если не все процедуры используют эту переменную, которую ты собрался объявить за Паблик, то лучше каждый раз заново ее объявлять в процедурах. Может, на одну строку больше, зато лишняя память не кушается. И быстрее быдет. Ну а если он у тебя везде активно используется, то, конечно, лучше в паблик переменную значение засовывать.

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 06.05.2006 (Сб) 17:51

Если ссылаться "непосредственно" у тебя при каждом вызове будет прокручиваться функция val. Покуда нет циклов/рекурсии это не страшно (делай как тебе удобнее) Иначе - выполни функцию уже один раз и работай с переменными.

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 07.05.2006 (Вс) 1:45

Может я чего-то не понимаю с просоня, но зачем здесь вообще нужна функция val? У меня, если в текстбоксах циферки, то они и без val нормально складываются. Или я ошибаюсь? Имеется в виду первоначальный код автора топика.
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

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

Сообщение tyomitch » 07.05.2006 (Вс) 2:05

Если цифирьки дробные, то без Val разделителем трактуется национально заданный (запятая), с Val -- всегда точка. Иногда это важно.
Изображение

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 07.05.2006 (Вс) 9:46

Еще, Val("123abc")=123. CLng("123abc")=#run-time error.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 07.05.2006 (Вс) 10:23

дык... Это... Разве
var=text1.text (text=="123abc")
и
var=clng("123abc")
имеют что-то общее?

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

Сообщение Viper » 07.05.2006 (Вс) 10:28

Общее у них пожалуй лишь то, что и Val и CLng преобразовывают аргумент в число (по несколько разным правилам). Но Val преобразовывает в тип Double а CLng в Long. Более корректным наверноы было сравнить Val с CDbl.
Весь мир матрица, а мы в нем потоки байтов!

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

Сообщение tyomitch » 07.05.2006 (Вс) 10:31

Первым про CLng заговорил ANDLL.
Изображение

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 07.05.2006 (Вс) 10:33

Tamplier писал(а):дык... Это... Разве
var=text1.text (text=="123abc")
и
var=clng("123abc")
имеют что-то общее?
Скажем так:
Код: Выделить всё
dim v as Long
v=text1.text
v=clng(text1.text)

Последние две строчки эквивалентны.[/code]
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 07.05.2006 (Вс) 10:35

tyomitch писал(а):Первым про CLng заговорил ANDLL.
Короче, я хотел сказать, что Val, в отличие от простого приравнивания числовой переменной к строке еще и спокойно реагирует, если эта самая строка содержит не только числа.... А вот простое преобразование строки в число(приравнивание к числовой переменной, Clng или CDbl) вызовет ошибку в этом случае.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: AhrefsBot, SemrushBot и гости: 135

    TopList