powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Найдите десять отличий.
7 сообщений из 7, страница 1 из 1
Найдите десять отличий.
    #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
Найдите десять отличий.
    #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
Найдите десять отличий.
    #32810528
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
It may not be used with ByVal, ByRef, or Optional

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


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

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




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

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

Magnus
...
Рейтинг: 0 / 0
Найдите десять отличий.
    #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
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Найдите десять отличий.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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