0 / 0 / 0
Регистрация: 18.05.2008
Сообщений: 24
|
|
1 | |
VB6 пишет СЛИШКОМ БОЛЬШАЯ ПРОЦЕДУРА. Как быть?30.06.2008, 17:02. Показов 1956. Ответов 7
Метки нет (Все метки)
Пишет при компилляции и останавливается (выделяет) EndSub.
Причем все IF'ы и End IF'ы на месте. Help!!!
0
|
30.06.2008, 17:02 | |
Ответы с готовыми решениями:
7
Циклический список.слишком большая программа.Как посоветуете облегчить? Большая база данных, как быть? Слишком большая база Константа слишком большая |
0 / 0 / 0
Регистрация: 27.11.2007
Сообщений: 60
|
|
30.06.2008, 18:09 | 2 |
Буквально вчера была та же проблема. В MSDN написано, что объём процедуры не должен (и не может) превышать 64Кб. Выход один - разбивать на отдельные процедуры и функции.
Удачи !
0
|
0 / 0 / 0
Регистрация: 18.05.2008
Сообщений: 24
|
|
30.06.2008, 18:39 [ТС] | 3 |
Я нарвался на эту ситуацию сам. Дело в том, что я не умею передавать переменные (да что переменные)... ничего не умею передавать в другие процедуры. Как это делается? Есть переменные, но в основном работаю с массивами.
Спасибо.
0
|
Vita
|
|
30.06.2008, 20:07 | 4 |
Спрашивай - ответим. Но так нельзя писАть - все в одной! Да еще на 64К!
|
0 / 0 / 0
Регистрация: 18.05.2008
Сообщений: 24
|
|
01.07.2008, 11:59 [ТС] | 5 |
Ладно, тогда спрашиваю:
1) Как передать в процедуру переменные (и можно ли обойтись без этого)? 2) Для чего нужен Option Explicit? Спасиб.
0
|
Vita
|
|
01.07.2008, 15:25 | 6 |
2) Для чего нужен Option Explicit?
Для проверки. Если задана в начале модуля, то в этом модуле невозможно использовать переменные, которые не объявлены. Т.е. перед использованием переменной, ты ДОЛЖЕН ее объявить. Если не задана, то переменная автоматически создается и тип ее зависит от имени ((?) я точно не знаю) и, как правило, равен Variant. Например, i% - целочисленная, s$ - строковая. Но лучше явно описывать. Есть опция VB: Tools->Options...->Require Variable Declaration. Я ее установил и VB автоматом добавляет в каждый модуль. 1) Как передать в процедуру переменные (и можно ли обойтись без этого)? Сначала нужно создать подпрограмму (Sub) или функцию (Function). Функция может возвращать значение, подпрограмма - нет. Код
Sub XXX(Byval i As Long, j As Long) j = i + 1 End Sub Код
Dim k As Long XXX 22, k ' или Call XXX(22, k) ' Здесь k равно 23 |
0 / 0 / 0
Регистрация: 18.05.2008
Сообщений: 24
|
|
02.07.2008, 11:33 [ТС] | 7 |
Немного не так. У меня есть, как Вы говорите, подпрограмма (Sub).
В ней я объяиляю и использую массив Arr_Zakazy(x,y). Далее я делаю отдельную Sub выводящую этот Arr_Zakazy(x,y) на печать,но В ЭТОМ Sub'e Arr_Zakazy(x,y) уже не видна. Делать ReDim Preserve что ли? А как быть с НЕМАССИВАМИ (переменными)? Вобщем вопрос в том как сделать так, чтобы в процедуре печати массив и другие переменные были видны.
0
|
Vita
|
|
02.07.2008, 12:44 | 8 |
1. Переменная может быть описана вне Sub.
Код
Dim Arr_Zakazy(10,100) As Variant Sub XXX1() Arr_Zakazy(1,2) = 'что-нибудь' Call XXX2 End Sub Sub XXX2() debug.print Arr_Zakazy(1,2) End Sub Код
Sub XXX1() Dim Arr_Zakazy(10,100) As Variant Arr_Zakazy(1,2) = 'что-нибудь' Call XXX2(Arr_Zakazy) Call XXX3(Arr_Zakazy) End Sub Sub XXX2(A() As Variant) ' Здесь можно тип Arr_Zakazy debug.print A(1,2) End Sub Sub XXX3(A As Variant) ' Здесь именно Variant debug.print A(1,2) End Sub |
02.07.2008, 12:44 | |
02.07.2008, 12:44 | |
Помогаю со студенческими работами здесь
8
Слишком большая нагрузка на ЦП Константа слишком большая Слишком большая длина записи Слишком большая длина записи Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |