Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
*BSH
0 / 0 / 0
Регистрация: 18.05.2008
Сообщений: 24
1

VB6 пишет СЛИШКОМ БОЛЬШАЯ ПРОЦЕДУРА. Как быть?

30.06.2008, 17:02. Просмотров 976. Ответов 7
Метки нет (Все метки)

Пишет при компилляции и останавливается (выделяет) EndSub.

Причем все IF'ы и End IF'ы на месте.
Help!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2008, 17:02
Ответы с готовыми решениями:

Слишком большая загрузка проца и оперативы
Приветствую. Такая ситуация. Есть чат. Коннектится к SQL Server, получает...

Контроль длины Label. А также VB6 Portable vs VB6 Installed.
Исходя из заголовка темы, вопроса 2: 1.) Как определить, что в Label уже не...

Windows 2000 Rus VB6, VB6 Resource Editor отсутствует
В Windows 2000 Rus + SP3 проинсталлировал Visual Studio 6 + MSDN Full (вся...

Циклический список.слишком большая программа.Как посоветуете облегчить?
#include "mainwindow.h" #include "ui_mainwindow.h" #include<stdio.h>...

Большая база данных, как быть?
Есть Таблица в БД, в которой пока мало записей, но много столбцов, около 30-40....

7
Филин
0 / 0 / 0
Регистрация: 27.11.2007
Сообщений: 60
30.06.2008, 18:09 2
Буквально вчера была та же проблема. В MSDN написано, что объём процедуры не должен (и не может) превышать 64Кб. Выход один - разбивать на отдельные процедуры и функции.
Удачи !
0
*BSH
0 / 0 / 0
Регистрация: 18.05.2008
Сообщений: 24
30.06.2008, 18:39  [ТС] 3
Я нарвался на эту ситуацию сам. Дело в том, что я не умею передавать переменные (да что переменные)... ничего не умею передавать в другие процедуры. Как это делается? Есть переменные, но в основном работаю с массивами.
Спасибо.
0
Vita
30.06.2008, 20:07 4
Спрашивай - ответим. Но так нельзя писАть - все в одной! Да еще на 64К!
*BSH
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
Теперь можно использовать эту Sub:
Код
  Dim k As Long
  XXX 22, k ' или  Call XXX(22, k)
  ' Здесь k равно 23
*BSH
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
2. Переменная может быть описана в Sub и передана другой 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
Вообще Variant - штука мощная, но можно и явный тип указывать.
02.07.2008, 12:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2008, 12:44

Слишком большая база
Я впервые создал базу данных в ACCES2000. Размер получился более 1,5 Мб. Другие...

Слишком большая нагрузка на ЦП
Дело в том,что после установки одной игры с торрента,у меня появился процесс...

Слишком большая база данных
У меня есть поиск на сайте, если бд небольшое, то все нормально ищет. Но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru