Я разрабатываю приложение (стандартный ехе проект) для себя, для автоматизации работы с документами на работе.
Я не программист (нет техн.образования). Но если за что-то берусь, то пытаюсь в этом разобраться досконально.
Суть вопроса у меня вот в чем.
Среда - VB 6 (без сервис-паков).
Форма приложения изначально разрабатывалась в VBA (в MS Word 2003), я её потом экспортнул и закинул в проект.
В ней куча контролов. Комбобоксы, текстбоксы. Форма мультистраничная (с вкладками, если быть точным). Контролы юзать могу только от Forms 2.0 (т.к. форма, повторюсь, создавалась в VBA)
Так вот, программа постоянно пополняется новым кодом, разработка идет хорошо. И тут возникает проблема:
Все комбобоксы у меня подгружают данные из файлов данных, запись в которые ведет сама же программа. Данных совсем не много, я бы сказал даже ничтожно мало.
В определенный момент при создании нового комбобокса программа стала вылетать с критом. И не только программа, а и сам проект в VB и сам VB тоже стал вылетать. Происходит это при попытке заполнить список этого комбика из файла. Стоит только закомментить строчку
- Код: Выделить всё
'combobox.additem str
Что я только ни делал. Пытался другой существующий (сделанный ранее) комбобокс заполнить, менял место исполнения (по умолчанию - процедура Userform_initialize()), способ исполнения (копирование из другого комбобокса, считывания из другого файла). Один фиг. Попытка заполнить - вылет в винду.
Хочется узнать, в чем может быть проблема. Весь интернет перерыл, но так ничего и не нашел. Поэтому обращаюсь за советом.
З.Ы. Я пробовал разрабатывать это приложение с помощью стандартной формы VB, но происходил конфликт данных на рабочем компьютере (мое приложение не использует апи, не имеет установщика и не цепляет какие-либо нестандартные библиотеки и разрабатывается на ноутбуке). Поэтому решил оставить разработку, используя старую форму. И, повторюсь, все было нормально.
Полный кусок кода (процедура UserForm_Initialize()) выглядит так:
- Код: Выделить всё
If Len(Dir(App.Path & "\Data\Database\emit.dat")) Then
Open App.Path & "\Data\Database\emit.dat" For Input As #2
Do While Not EOF(2)
Line Input #2, str
emtnkl.AddItem str
emtcmd.AddItem str
emtrrost.AddItem str
emtdrag.AddItem str
ComboBox22.AddItem str
'emtcomputershare.AddItem str
Не работает последняя строчка (все строчки - заполнение комбобоксов). Стоит её открыть - вылет. Датка - это только расширение .dat (для красоты). На деле там незашифрованные данные в текстовом формате (там просто хранятся элементы списка, которые в другом месте приложения добавляются по мере надобности пользователем (т.е. мной).