Call

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Call

Сообщение kif » 15.04.2005 (Пт) 0:11

чем отличается

Код: Выделить всё
MyProc(a)


от

Код: Выделить всё
Call MyProc(a)
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 15.04.2005 (Пт) 0:30

Ничем - это legacy - за исключением некоторых тонкостей. Так, в первом случае VB отодвигает скобки от имени функции (кстати, у тебя это не показано, а зря :) ), в результате чего вся эта бадяга перестает распознаваться как единое целое и генерит ошибку :). Но вообще, лично я использую Call для единообразной записи вызовов - все в скобках.

Если ты не пишешь Call и не берешь возвращаемое значение, то список аргументов функции в скобки лучше не заключать. Если же пишешь или получаешь результат - скобки обязательны.

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 15.04.2005 (Пт) 0:35

а по отработке самой процедура ничем?

т.е. меня интересует если такую процедуру выполнять в таймере и она не будет успевать отрабатывать за таймерный промежуток, таймер будет тормозить?
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 15.04.2005 (Пт) 0:38

т.е. таймер будет ждать завершения процедуры или нет?
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 15.04.2005 (Пт) 0:40

если да, то как можно запустить процедуру так, чтобы она работала сама по себе.

так как по условию программы она не будет выполняться при каждом событии timer
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 15.04.2005 (Пт) 13:36

2 kif
Таймер работает асинхронно, ждать не будет.

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.04.2005 (Пт) 14:10

Если юзать DoEvents, таймер сможет прервать выполнение. Иначе не сможет. Так что если DoEvents не юзать, то процедура точно выполнится целиком...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 15.04.2005 (Пт) 14:12

Ой мне таки кажется, что этому челу нужна многопоточность...

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

Сообщение ANDLL » 18.04.2005 (Пн) 19:06

kif писал(а):т.е. меня интересует если такую процедуру выполнять в таймере и она не будет успевать отрабатывать за таймерный промежуток, таймер будет тормозить?

Когда выполняется процедура таймера, то таймер все равно отсчитывается. НО! Если таймер истекает, а процедура так и не завершается, то он "прорабатывает вхолостую", т.е. до тех пор, пока не завершиться одна процедура таймера, другая не запустится. И накапливаться эти процедуры в "очереди" не будут.
Это связано с тем, что сообщения WM_TIMER(как и WM_PAINT) не накапливаются.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

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

Re: Call

Сообщение tyomitch » 19.04.2005 (Вт) 0:49

kif писал(а):чем отличается
Код: Выделить всё
MyProc(a)

от
Код: Выделить всё
Call MyProc(a)

Если MyProc принимает параметр по ссылке, то в первом случае передастся копия a, а во втором - сама a. Если a - константа, или MyProc принимает параметр по значению, тогда разницы нет.

2Ennor: оба кода рабочие, никаких ошибок нет.
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.04.2005 (Вт) 5:12

Ennor имел в виду вариант с нескольким параметрами :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 19.04.2005 (Вт) 10:59

tyomitch писал(а):Если MyProc принимает параметр по ссылке, то в первом случае передастся копия a, а во втором - сама a


:oops: А где о таком написано??? :shock: :oops:
Или почему такая реализация? Я считал, что способ передачи указываеться ByRef или ByVal и в ран-тайме меняться не может
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.04.2005 (Вт) 11:23

В рантайме не может - но написание кода происходит в дизайн-тайм :)

Заключение аргумента в скобки с целью override byref уходит корнями в QBasic, и возможно, продолжает уходить корнями и дальше.
Но про возможность написания byval в месте вызова ты не мог не знать :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 19.04.2005 (Вт) 11:28

:oops: Первый раз слышу :shock:
Спасибо за науку :)
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч


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

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

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

    TopList  
cron