Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Найдите десять отличий. / 7 сообщений из 7, страница 1 из 1
02.12.2004, 17:55:23
    #32810391
Иван FXS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найдите десять отличий.
Угадайте, какой из кодов:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub ParamArray_wri_______________TRYYYYYY()
           Dim x, y, z
ParamArray_wri x, y, z
End Sub

Private Sub ParamArray_wri(ParamArray p())
Call ParamArray_wri_p(p)
End Sub

Private Sub ParamArray_wri_p(ByVal p)
p( 0 ) =  111 
p( 1 ) =  222 
p( 2 ) =  333 
End Sub
и
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub ParamArray_wri_______________TRYYYYYY()
           Dim x, y, z
ParamArray_wri x, y, z
End Sub

Private Sub ParamArray_wri(ParamArray p())
Call ParamArray_wri_p(p)
End Sub

Private Sub ParamArray_wri_p(p)
p( 0 ) =  111 
p( 1 ) =  222 
p( 2 ) =  333 
End Sub
- скомпилируется, а какой - нет?
...
Рейтинг: 0 / 0
02.12.2004, 18:24:04
    #32810508
Lenivec
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найдите десять отличий.
ParamArray Optional. Used only as the last argument in arglist to indicate that the final argument is an Optional array of Variant elements. The ParamArray keyword allows you to provide an arbitrary number of arguments. It may not be used with ByVal, ByRef, or Optional.

следовательно первый
...
Рейтинг: 0 / 0
02.12.2004, 18:31:33
    #32810528
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найдите десять отличий.
It may not be used with ByVal, ByRef, or Optional

В первом как раз и используется.
Следовательно второй :).


Magnus
...
Рейтинг: 0 / 0
02.12.2004, 18:44:11
    #32810550
Lenivec
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найдите десять отличий.
Magnus23It may not be used with ByVal, ByRef, or Optional

В первом как раз и используется.
Следовательно второй :).




не в том дело, дело в том что в процедуру ParamArray_wri_p уже пирходит параметр ByVal, и если не указать насильно что это он должен и дальше пойти как ByVal, то все и валится, поэтому работает первый вариант
...
Рейтинг: 0 / 0
02.12.2004, 18:45:31
    #32810553
Lenivec
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найдите десять отличий.
да забыл добавить, чтобы было понятно...

бейсик массивы по умолчанию передает ссылкой
...
Рейтинг: 0 / 0
02.12.2004, 19:10:05
    #32810580
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найдите десять отличий.
ПО умолчанию ссылкой, ByVal запрещено, что то не вижу противоречия.

Magnus
...
Рейтинг: 0 / 0
02.12.2004, 19:34:55
    #32810603
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найдите десять отличий.
Lenivecда забыл добавить, чтобы было понятно...

бейсик массивы по умолчанию передает ссылкой
да
Magnus23ПО умолчанию ссылкой, ByVal запрещено, что то не вижу противоречия.
да, запрещено, но только если речь идет о ParamArray. А это не совсем массив, скажем так. "Обычные" массивы отлично понимают и byVal и ByRef
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Option Explicit

Private Sub Command1_Click()
 Dim a( 1  To  5 ) As Variant
 a( 1 ) =  1 
 Debug.Print a( 1 )
 ChangeArrayByRef a
 Debug.Print a( 1 )
 ChangeArrayByVal a
 Debug.Print a( 1 )
End Sub

Private Sub ChangeArrayByRef(ByRef b As Variant)
    b( 1 ) =  2 
End Sub

Private Sub ChangeArrayByVal(ByVal b As Variant)
    b( 1 ) =  3 
End Sub
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Найдите десять отличий. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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