
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
17.07.2005, 16:14:28
|
|||
|---|---|---|---|
|
|||
Не правильная передача параметров в процедуру и др. |
|||
|
#18+
Помогите пожалуйста =( '[глобальная, описана второй строкой в модуле, после Option Explicit] Public strMask As String вот объявление функции: Sub Search_n_Mark(strMask As String, strCellValue As String, iOffset As Integer) вот ее вызов в том же модуле: '[локальные переменные для функции] Dim ii As Integer Dim strCellValue As String Dim iOffset As Integer '[вызов] Search_n_Mark strMask = strMask, _ strCellValue = strCellValue, _ iOffset = ii Вопрос1: почему когда я вызываю процедуру Search_n_Mark(strMask, strCellValue, ii) транслятор пишет(сразу после ввода, а не выполнения) Compile error: Expected: = и ставит курсор в конец строки, после скобки. И выделяет красным всю строку вызова Вопрос2: при пошаговом просмотре я выяснил, что когда выполняется процедура Search_n_Mark, то переменные почемуто приобретают такие значение strMask = "True" (тип String!) strCellValue = "True" (тип String!) iOffset = 0 (тип Integer) Однако при вызове я передавал в переменную strMask строку "sdfse", а strCellValue должно было стать пустой строкой ""(посмотрел в окне Watches). Почему получилось "True" в обоих случаях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.07.2005, 19:47:14
|
|||
|---|---|---|---|
|
|||
Не правильная передача параметров в процедуру и др. |
|||
|
#18+
Компилятор Вашу вот эту строку кода: Search_n_Mark strMask = strMask, strCellValue = strCellValue, iOffset = ii понимает (и правильно делает) как: Search_n_Mark (strMask = strMask), (strCellValue = strCellValue), (iOffset = ii) В результате (ответ на Ваш второй вопрос) получается, что в процедуру Search_n_Mark передаются следующие параметры: Search_n_Mark True (ведь strMask равно strMask, а значит Тру), True (ведь strCellValue равно strCellValue), False (ведь iOffset не равно ii) То есть, в процедуру вы передавали не переменные, а результат сравнения двух переменных, который является будевой велечиной - либо равно, либо не равно. Вызывать надо так: '[локальные переменные для функции] Dim ii As Integer Dim strCellValue As String 'Dim iOffset As Integer ' - вот это лишнее! Или лишнее ii... сами смотрите... '[инициализация переменных] ii = значению, которое надо передать в процедуру strCellValue = значению, которое надо передать в процедуру strMask = значению, которое надо передать в процедуру '[вызов] Search_n_Mark strMask, strCellValue, ii Имена переменных в данном коде могут быть какими угодно, т.е. они не обязаны соответствовать именам в вызываемой процедуре. Вам бы обязательно почитать книжку по программированию (неважно на каком языке программирования). В частности, обратите внимание на разделы про вызов функций и процедур, передачу параметров по ссылке и по значению, возврат значения из функции и... самое главное... Про области видимости переменных. Тогда в вашем коде не будут возникать переменные буква-в-букву повторяющие какие-то левые переменные и не возникнут такие причудливые конструкции... Удачи Вам на этом поприще! З.Ы. Чуть глаза не выскочили! Надо ж более гуманно относиться к форумянам :) Даже не знаю, как Вас угораздило такое придумать... З.Ы. Мое уважение автору за столь героические самостоятельные попытки! Без смеха... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=60&mobile=1&tid=2167464]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 341ms |

| 0 / 0 |
