Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 18.05.2008
Сообщений: 24

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

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

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

Причем все IF'ы и End IF'ы на месте.
Help!!!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.06.2008, 17:02
Ответы с готовыми решениями:

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

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

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

7
0 / 0 / 0
Регистрация: 27.11.2007
Сообщений: 60
30.06.2008, 18:09
Буквально вчера была та же проблема. В MSDN написано, что объём процедуры не должен (и не может) превышать 64Кб. Выход один - разбивать на отдельные процедуры и функции.
Удачи !
0
0 / 0 / 0
Регистрация: 18.05.2008
Сообщений: 24
30.06.2008, 18:39  [ТС]
Я нарвался на эту ситуацию сам. Дело в том, что я не умею передавать переменные (да что переменные)... ничего не умею передавать в другие процедуры. Как это делается? Есть переменные, но в основном работаю с массивами.
Спасибо.
0
Vita
30.06.2008, 20:07
Спрашивай - ответим. Но так нельзя писАть - все в одной! Да еще на 64К!
0 / 0 / 0
Регистрация: 18.05.2008
Сообщений: 24
01.07.2008, 11:59  [ТС]
Ладно, тогда спрашиваю:

1) Как передать в процедуру переменные (и можно ли обойтись без этого)?
2) Для чего нужен Option Explicit?
Спасиб.
0
Vita
01.07.2008, 15:25
2) Для чего нужен Option Explicit?
Для проверки. Если задана в начале модуля, то в этом модуле невозможно использовать переменные, которые не объявлены. Т.е. перед использованием переменной, ты ДОЛЖЕН ее объявить. Если не задана, то переменная автоматически создается и тип ее зависит от имени ((?) я точно не знаю) и, как правило, равен Variant. Например, i% - целочисленная, s$ - строковая.

Но лучше явно описывать. Есть опция VB: Tools->Options...->Require Variable Declaration. Я ее установил и VB автоматом добавляет в каждый модуль.

1) Как передать в процедуру переменные (и можно ли обойтись без этого)?
Сначала нужно создать подпрограмму (Sub) или функцию (Function). Функция может возвращать значение, подпрограмма - нет.
Code
1
2
3
Sub XXX(Byval i As Long, j As Long)
  j = i + 1
End Sub
Теперь можно использовать эту Sub:
Code
1
2
3
  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  [ТС]
Немного не так. У меня есть, как Вы говорите, подпрограмма (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
1. Переменная может быть описана вне Sub.
Code
1
2
3
4
5
6
7
8
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.
Code
1
2
3
4
5
6
7
8
9
10
11
12
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 - штука мощная, но можно и явный тип указывать.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.07.2008, 12:44
Помогаю со студенческими работами здесь

Константа слишком большая
masm model small .stack 1000h .data x dw 0 y dw 0 z dw 0 F dw ?

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

Константа слишком большая
В общем то вот, очень много таких ошибок, как исправить эту беду ??

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

Слишком большая длина записи
Добрый день! При заполнении поля формата "Дата" пишет, что "Слишком большая длина записи", хотя до этого было всё хорошо,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru