Вылет в винду при попытке заполнить combobox

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
John Forsyte
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 11.03.2011 (Пт) 10:27

Вылет в винду при попытке заполнить combobox

Сообщение John Forsyte » 11.03.2011 (Пт) 11:02

Здравствуйте!
Я разрабатываю приложение (стандартный ехе проект) для себя, для автоматизации работы с документами на работе.
Я не программист (нет техн.образования). Но если за что-то берусь, то пытаюсь в этом разобраться досконально.
Суть вопроса у меня вот в чем.
Среда - 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 (для красоты). На деле там незашифрованные данные в текстовом формате (там просто хранятся элементы списка, которые в другом месте приложения добавляются по мере надобности пользователем (т.е. мной).

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Re: Вылет в винду при попытке заполнить combobox

Сообщение Sirik » 11.03.2011 (Пт) 11:10

кинь кусок dat файла, если это конечно не секретная информация)
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Вылет в винду при попытке заполнить combobox

Сообщение Хакер » 11.03.2011 (Пт) 11:22

Поставить SP6 в первую очередь.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

John Forsyte
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 11.03.2011 (Пт) 10:27

Re: Вылет в винду при попытке заполнить combobox

Сообщение John Forsyte » 11.03.2011 (Пт) 11:26

Лукойл (ao)
ФСК ЕЭС (ao)
Мосэнерго (ao)
ИНТЕР РАО (ao)
Русгидро (ao)
Газпром нефть (ao)
Салнефтсинтез (ao)
ОГК-3 (ao)

Это в датке. Все другие комбобоксы этими данными заполняются на ура.

Хакер писал(а):Поставить SP6 в первую очередь.


Хакер, ставил... После чего было полное разрушение VB 6. Просто тот переставал работать...
VB 6 у меня стоит на WinXP SP3.
Сейчас попробую ещё раз поставить... Только вряд ли это решит проблему...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Вылет в винду при попытке заполнить combobox

Сообщение Хакер » 11.03.2011 (Пт) 11:37

John Forsyte писал(а):После чего было полное разрушение VB 6.

Такие фразы вызывают у меня полное разрушение мозга. Без обид.

У меня и многих, кого я знаю. Стоит SP6. И даже на WinXP-SP3. И ни у кого не произошло «полного разрушения». Так что вероятно у тебя либо «не тот» VB6, либо «не тот» SP6. Первое, кстати, может быть причиной, по которой и возникают проблемы.

John Forsyte писал(а):Только вряд ли это решит проблему...

Даже если не решит, то уменьшит множество возможных причин на единицу. А это важный шаг в решении проблемы.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Вылет в винду при попытке заполнить combobox

Сообщение arthur2 » 11.03.2011 (Пт) 11:43

John Forsyte писал(а):emtcomputershare.AddItem str
Какие-нибудь события emtcomputershare_ляляля обрабатываются? С какой ошибкой вываливается бейсик? Может, просто возникает рекурсия?
Артур
 
   

John Forsyte
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 11.03.2011 (Пт) 10:27

Re: Вылет в винду при попытке заполнить combobox

Сообщение John Forsyte » 11.03.2011 (Пт) 11:54

Хакер писал(а):
John Forsyte писал(а):После чего было полное разрушение VB 6.

Такие фразы вызывают у меня полное разрушение мозга. Без обид.

У меня и многих, кого я знаю. Стоит SP6. И даже на WinXP-SP3. И ни у кого не произошло «полного разрушения». Так что вероятно у тебя либо «не тот» VB6, либо «не тот» SP6. Первое, кстати, может быть причиной, по которой и возникают проблемы.

John Forsyte писал(а):Только вряд ли это решит проблему...

Даже если не решит, то уменьшит множество возможных причин на единицу. А это важный шаг в решении проблемы.


Я нормальный и не обижаюсь :wink:
Хм... я попробую сначала тогда поставить SP6, если не решит проблему, попробую сделать переустановку.
Я пробовал делать одну хитрость, но она помогла лишь раз:
я создавал новую форму, копировал в нее все, сохранял под другим именем, удалял форму из проекта, в которой происходила ошибка и цеплял "свежую" форму. Один раз все получилось и скомпилированное приложение работало. Добавил новый комбобокс - вылет.

arthur2 писал(а):
John Forsyte писал(а):emtcomputershare.AddItem str
Какие-нибудь события emtcomputershare_ляляля обрабатываются? С какой ошибкой вываливается бейсик? Может, просто возникает рекурсия?


Есть событие непосредственно в самом комбобоксе (не только в этом, а во всех, оно идентично) - это выгрузка из другого файла данных и подстановка их в текстовые поля формы (событие наступает при параметре Change, т.е. при выборе какого-либо элемента из списка). И все. Больше никаких событий нет.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Вылет в винду при попытке заполнить combobox

Сообщение arthur2 » 11.03.2011 (Пт) 13:04

John Forsyte писал(а):Есть событие непосредственно в самом комбобоксе (не только в этом, а во всех, оно идентично) - это выгрузка из другого файла данных и подстановка их в текстовые поля формы (событие наступает при параметре Change, т.е. при выборе какого-либо элемента из списка).
Терминология у тебя хромает :) Change - это и есть событие (а не параметр). А "загрузка-выгрузка-подстановка" - это то, как ты это событие обрабатываешь.
Артур писал(а):С какой ошибкой вываливается бейсик?

Поставь бряк на emtcomputershare.AddItem str и посмотри, вываливается ли бейсик именно на этой строке, или после добавления итема исполнение куда-то всё-таки идет.

Что-нибудь в коде ещё происходит с emtcomputershare? поставь бряки на все эти действия и посмотри, не попадет ли бейсик в этот код, прежде чем вывалится. Заполняй emtcomputershare первым, а не последним - изменит ли это что-нибудь?
Артур
 
   

John Forsyte
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 11.03.2011 (Пт) 10:27

Re: Вылет в винду при попытке заполнить combobox

Сообщение John Forsyte » 11.03.2011 (Пт) 13:32

Как раз с бряком бейсик не валится.
Все действия произвел.
После обработки процедуры UserForm_Initialize, соответственно выводится на экран сама форма (т.е. приложение). Эта строчка как раз в этой процедуре и стоит (код в начале топика оттуда).
Заполнение первым результата не дает.
Если поставить бряки на событие change, а на добавление данных в комбик - снять бряк, происходит вылет все равно. Только если поставить бряк на
Код: Выделить всё
emtcomputershare.AddItem str
. Замена имени комбобокса тоже ничего не дает. Замена самого комбобокса на другой - тоже.
Да...и метод компиляции приложения тоже роли не играет. Все перепробовал.
Вылет происходит с неопознанной ошибкой.
Один нюанс ещё такой: если заменить на другой комбобокс, находясь ещё в бейсике - работает. Стоит только сохранить проект, выйти из бейсика и зайти снова - вылет при попытке запуска из под бейсика.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Вылет в винду при попытке заполнить combobox

Сообщение Хакер » 11.03.2011 (Пт) 13:47

John Forsyte писал(а):Вылет происходит с неопознанной ошибкой.

Что за неопознанная ошибка? Код, описание кто должен предоставить? :x
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

John Forsyte
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 11.03.2011 (Пт) 10:27

Re: Вылет в винду при попытке заполнить combobox

Сообщение John Forsyte » 11.03.2011 (Пт) 14:15

Хакер писал(а):
John Forsyte писал(а):Вылет происходит с неопознанной ошибкой.

Что за неопознанная ошибка? Код, описание кто должен предоставить? :x


Тип события: Ошибка
Источник события: Application Error
Категория события: Отсутствует
Код события: 1000
Дата: 11.03.2011
Время: 14:02:57
Пользователь: Н/Д
Компьютер: ****
Описание:
Ошибка приложения vb6.exe, версия 6.0.81.76, модуль unknown, версия 0.0.0.0, адрес 0x00000000.
Данные:
0000: 41 70 70 6c 69 63 61 74 Applicat
0008: 69 6f 6e 20 46 61 69 6c ion Fail
0010: 75 72 65 20 20 76 62 36 ure vb6
0018: 2e 65 78 65 20 36 2e 30 .exe 6.0
0020: 2e 38 31 2e 37 36 20 69 .81.76 i
0028: 6e 20 75 6e 6b 6e 6f 77 n unknow
0030: 6e 20 30 2e 30 2e 30 2e n 0.0.0.
0038: 30 20 61 74 20 6f 66 66 0 at off
0040: 73 65 74 20 30 30 30 30 set 0000
0048: 30 30 30 30 0d 0a 0000..

Других данных об ошибке нет. При подготовке отчета только темповский файл создается. В нем файле только чексуммы библиотек, которые были подгружены в сам бейсик. Больше там ничего нет.... Ну и аналогичная ошибка в самом приложении:

Тип события: Ошибка
Источник события: Application Error
Категория события: Отсутствует
Код события: 1000
Дата: 11.03.2011
Время: 10:02:24
Пользователь: Н/Д
Компьютер: *****
Описание:
Ошибка приложения 041F0435044004350440043504330438044104420440043004460438044F002004260411002E006500780065, версия 1.0.0.47, модуль unknown, версия 0.0.0.0, адрес 0x00000000.
Данные:
0000: 41 70 70 6c 69 63 61 74 Applicat
0008: 69 6f 6e 20 46 61 69 6c ion Fail
0010: 75 72 65 20 20 30 34 31 ure 041
0018: 46 30 34 33 35 30 34 34 F0435044
0020: 30 30 34 33 35 30 34 34 00435044
0028: 30 30 34 33 35 30 34 33 00435043
0030: 33 30 34 33 38 30 34 34 30438044
0038: 31 30 34 34 32 30 34 34 10442044
0040: 30 30 34 33 30 30 34 34 00430044
0048: 36 30 34 33 38 30 34 34 60438044
0050: 46 30 30 32 30 30 34 32 F0020042
0058: 36 30 34 31 31 30 30 32 60411002
0060: 45 30 30 36 35 30 30 37 E0065007
0068: 38 30 30 36 35 20 31 2e 80065 1.
0070: 30 2e 30 2e 34 37 20 69 0.0.47 i
0078: 6e 20 75 6e 6b 6e 6f 77 n unknow
0080: 6e 20 30 2e 30 2e 30 2e n 0.0.0.
0088: 30 20 61 74 20 6f 66 66 0 at off
0090: 73 65 74 20 30 30 30 30 set 0000
0098: 30 30 30 30 0d 0a 0000..

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Вылет в винду при попытке заполнить combobox

Сообщение arthur2 » 11.03.2011 (Пт) 14:43

Попробуй вместо события UserForm_Initialize использовать UserForm_load - подозреваю, что на момент инициализации комбики ещё не очень-то готовы.
Артур
 
   

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Вылет в винду при попытке заполнить combobox

Сообщение arthur2 » 11.03.2011 (Пт) 15:01

John Forsyte писал(а):Как раз с бряком бейсик не валится.
John Forsyte писал(а):Только если поставить бряк на
emtcomputershare.AddItem str
Сколько записей добавляется, прежде чем бейсик умирает? Поставь бряк на Loop - хоть раз до него выполнение доходит?
Артур
 
   

John Forsyte
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 11.03.2011 (Пт) 10:27

Re: Вылет в винду при попытке заполнить combobox

Сообщение John Forsyte » 11.03.2011 (Пт) 19:18

arthur2 писал(а):Попробуй вместо события UserForm_Initialize использовать UserForm_load - подозреваю, что на момент инициализации комбики ещё не очень-то готовы.


Нет, они готовы. Повторюсь, с другими комбиками проблем нет вообще.
А потом - UserForm_Load - такого события нет для формы, импортированной из среды VBA. Есть Form_Load - для стандартной формы бейсика.

arthur2 писал(а):
John Forsyte писал(а):Как раз с бряком бейсик не валится.
John Forsyte писал(а):Только если поставить бряк на
emtcomputershare.AddItem str
Сколько записей добавляется, прежде чем бейсик умирает? Поставь бряк на Loop - хоть раз до него выполнение доходит?


Отладку я проводил много раз. Сейчас ещё раз прошел. Убирай луп, не убирай - доходит курсор до обозначенной в данной теме проблемной строчки, на ней нажимаю Ф8 - вылет.
Может дело в самом конкретном контроле? Но тогда бы все комбики вылетали. А вылетает только один.
И, как я уже писал, если делать комбик и проверять его из под бейсика, не сохраняя проект - вылета не будет.
Вылет происходит только после сохранения проекта, выхода из бейсика и повторного входа в бейсик с открытием приложения.
Я на днях поставлю бейсик и шестой пак на другую машину и ещё раз проверю...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Вылет в винду при попытке заполнить combobox

Сообщение Хакер » 11.03.2011 (Пт) 19:20

Выложил бы хоть свой горе-проект или нормальную информацию об ошибке, а не тот бесмыслленый поток данных, что ты привёл.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Вылет в винду при попытке заполнить combobox

Сообщение arthur2 » 11.03.2011 (Пт) 19:44

John Forsyte писал(а):Убирай луп, не убирай - доходит курсор до обозначенной в данной теме проблемной строчки, на ней нажимаю Ф8 - вылет.
Ты же сказал, что пошагово не вырубает? Если бряк поставить на проблемную строку и дальше идти пошагово, вопрос: идет ли код сразу на следующую строку, или его уносит ещё куда-то? или всё-таки вырубает сразу?

Впиши после проблемной строки stop - сработает этот стоп хоть раз или нет?
Артур
 
   

John Forsyte
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 11.03.2011 (Пт) 10:27

Re: Вылет в винду при попытке заполнить combobox

Сообщение John Forsyte » 14.03.2011 (Пн) 13:10

Хакер писал(а):Выложил бы хоть свой горе-проект или нормальную информацию об ошибке, а не тот бесмыслленый поток данных, что ты привёл.


Выложить не могу.
Хакер, что ты имеешь ввиду под нормальной информацией? Лог файл? Если да, то подскажи, пожалуйста, какой скрипт надо писать, чтобы писался лог работы программы.

Сп6 поставил. Вылет все равно происходит.
Я уже пытался другой метод использовать. Не additem, а removeitem, clear.... Вылет везде.

arthur2 писал(а):
John Forsyte писал(а):Убирай луп, не убирай - доходит курсор до обозначенной в данной теме проблемной строчки, на ней нажимаю Ф8 - вылет.
Ты же сказал, что пошагово не вырубает? Если бряк поставить на проблемную строку и дальше идти пошагово, вопрос: идет ли код сразу на следующую строку, или его уносит ещё куда-то? или всё-таки вырубает сразу?

Впиши после проблемной строки stop - сработает этот стоп хоть раз или нет?


Я не говорил, что пошагово не выбивает. Я говорил о том, что пока проект не сохранишь и не выйдешь из бейсика (или не скомпилируешь приложение), все работает. Стоит только сохранить и выйти или скомпилировать и выйти - все. Вылет.
Если бряк поставить, дальше пошагово идет и все загружается. Проблемный комбик просто пуст. Идет сразу на следующую строку. Операторов Goto там нет. Снимаешь бряк - вылет.
Ставил стоп, как на проблемной строке, так и за ней. Стоп не срабатывает - вылет.


У меня несколько операций по загрузке данных из файлов. Пробовал сунуть эту строчку для загрузки из других файлов - вылет именно на этой строчке. С бряком - все норм. Но я не могу поставить больше ни один комбобокс, так как смысла нет. Ставлю - все равно вылетит при подгрузке.
Пробовал ставить листбокс - тоже самое.

Повторюсь, сервиспак я уже поставил.

Получается, что проблема конкретно в загрузке данных из файлов (я использую строковые данные). Но только если делать новый комбо или лист боксы... Со старыми - хоть в сто файлов их запихни - будут грузить из всех (если использовать метод for append)

P.s. Как класс комбобокс и листбокс у меня подключены только от самого VB и MSForms 2.0. В данном приложении используются только контролы MSForms 2.0! А их совсем немного.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Вылет в винду при попытке заполнить combobox

Сообщение Хакер » 14.03.2011 (Пн) 13:15

John Forsyte писал(а):Хакер, что ты имеешь ввиду под нормальной информацией?

  • Код исключения.
  • Дополнительные параметры исключения (набор и смысл зависят от первого)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

John Forsyte
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 11.03.2011 (Пт) 10:27

Re: Вылет в винду при попытке заполнить combobox

Сообщение John Forsyte » 14.03.2011 (Пн) 13:25

Хакер писал(а):
John Forsyte писал(а):Хакер, что ты имеешь ввиду под нормальной информацией?

  • Код исключения.
  • Дополнительные параметры исключения (набор и смысл зависят от первого)


0xc0000005
Остальные значения - по нулям (Flags, Record, Address)

Это? Просто больше никаких данных об ошибке вообще нет. Дальше идет описание модулей. Не думаю, что это надо.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Вылет в винду при попытке заполнить combobox

Сообщение Хакер » 14.03.2011 (Пн) 13:57

John Forsyte писал(а):Остальные значения - по нулям (Flags, Record, Address)

Такого не может быть.

John Forsyte писал(а):Не думаю, что это надо.

Как раз это.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

John Forsyte
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 11.03.2011 (Пт) 10:27

Re: Вылет в винду при попытке заполнить combobox

Сообщение John Forsyte » 14.03.2011 (Пн) 14:18

Напиши, пожалуйста, в ЛС куда выслать экселевский файл данных об ошибке (я из отчета в формате тхт считал хмл в экселе и сохранил как обычный экселевский файл для удобства просмотра)

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Вылет в винду при попытке заполнить combobox

Сообщение arthur2 » 14.03.2011 (Пн) 15:00

John Forsyte писал(а):Если бряк поставить, дальше пошагово идет и все загружается. Проблемный комбик просто пуст. Идет сразу на следующую строку.
Интересно :) Строка с добавлением пошагово проходит, но комбик пустой? Видимо, выше есть On error resume next? Закомментируй и посмотри, какая ошибка. Или поставь после "заполнения" комбика строку debug.print err.description и посмотри, есть ли там чего? (идти, естественно, пошагово)

Попробуй добавить в комбик не данные, а что-нибудь левой, типа "lalala" - всё равно вылетает? И всё равно комбик пуст, если пошагово?
Артур
 
   

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Вылет в винду при попытке заполнить combobox

Сообщение Хакер » 14.03.2011 (Пн) 15:08

John Forsyte писал(а):я из отчета в формате тхт считал хмл в экселе и сохранил как обычный экселевский файл для удобства просмотра

Что за глупая тенденция — полагать и быть уверенным, что собеседник обязательно пользуется MS Offic-ом, и что MS Office у собеседника обязательно установлен.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

John Forsyte
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 11.03.2011 (Пт) 10:27

Re: Вылет в винду при попытке заполнить combobox

Сообщение John Forsyte » 14.03.2011 (Пн) 15:22

arthur2 писал(а):
John Forsyte писал(а):Если бряк поставить, дальше пошагово идет и все загружается. Проблемный комбик просто пуст. Идет сразу на следующую строку.
Интересно :) Строка с добавлением пошагово проходит, но комбик пустой? Видимо, выше есть On error resume next? Закомментируй и посмотри, какая ошибка. Или поставь после "заполнения" комбика строку debug.print err.description и посмотри, есть ли там чего? (идти, естественно, пошагово)

Попробуй добавить в комбик не данные, а что-нибудь левой, типа "lalala" - всё равно вылетает? И всё равно комбик пуст, если пошагово?


У меня усугубилась проблема... Теперь после того, как я ставлю бряк на проблемной строке, вылетает другой комбик. Ставлю на нем - вылетает ещё другой. И так по очереди... скоро комбиков, в которые записываются данные, не останется.
Вылетают комбики, в которых уже программно записываются строки: Combobox.Lisl = Array(строки... )
При каждой новой загрузке бейсика вылетает по одному комбику в произвольном порядке, если ставить бряк на предыдущем вылете бейсика.
on error есть. Убрал - тоже самое. Вылет. Просто беспричинный вылет в винду при обращении к комбобоксу.

Если код отчистить вообще, программа просто загружается с пустыми комбобоксами.

John Forsyte
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 11.03.2011 (Пт) 10:27

Re: Вылет в винду при попытке заполнить combobox

Сообщение John Forsyte » 14.03.2011 (Пн) 15:32

Код: Выделить всё
Sub UserForm_Initialize()
'ComboBox19.List = Array("НРД", "ДКК")
'ComboBox24.List = Array("Обыкновенные", "Привилегированные")
'ComboBox23.List = Array("Никойл", "ЦМД", "РОСТ", "СР-Драга", "Computershare")
'Call loaditems(ComboBox22)
TextBox48.Text = ""
If Len(Dir(App.Path & "\Data\Database\days.dat")) Then
Open App.Path & "\Data\Database\days.dat" For Input As #1
Do While Not EOF(1)
Line Input #1, str
'ComboBox1.AddItem str
ComboBox4.AddItem str
ComboBox7.AddItem str
ComboBox11.AddItem str
ComboBox17.AddItem str
Loop
Close #1
Else
MsgBox "Файл ""days.dat"" поврежден или отсутствует"
End If
Call peredat_load
'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
'ComboBox38.AddItem str
'Loop
'Close #2
'Else
'MsgBox "Лист эмитентов отсутствует или поврежден!"
'End If
Dim k As String
For i = 0 To ComboBox22.ListCount - 1 Step 1
k = ComboBox22.List(i)
'emtcomputershare.AddItem k
Next i
On Error GoTo 1
'If Len(Dir(App.Path & "\Data\Database\predstlist.dat")) Then
'D = FreeFile
'Open App.Path & "\Data\Database\predstlist.dat" For Input As #D
'Do While Not EOF(D)
'Line Input #D, str
''ListBox1.AddItem str
'ComboBox31.AddItem str
'predst_nikoil.AddItem str
'predst_draga.AddItem str
'predst_rost.AddItem str
'predst_cmd.AddItem str
'predst_computershare.AddItem str
'Loop
'Close #D
'Else
'MsgBox "файл поврежден или остутсвует!"
'End If
'MultiPage1.Value = 0
1 End Sub


Я уже даже решил перекинуть часть кода в модуль , а не в процедуру. И вызывать его Call peredat_load
Вот содержимое модуля:
Код: Выделить всё
Dim str As String
Public Function peredat_load()
FileNum = FreeFile
On Error Resume Next
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
peredat.emtnkl.AddItem str
peredat.emtcmd.AddItem str
peredat.emtrrost.AddItem str
'peredat.emtdrag.AddItem str
Debug.Print Err.Description
'peredat.ComboBox22.AddItem str
peredat.ComboBox38.AddItem str
Loop
Close #2
Else
MsgBox "Лист эмитентов поврежден или отсутствует"
End If

If Len(Dir(App.Path & "\Data\Database\predstlist.dat")) Then
D = FreeFile
Open App.Path & "\Data\Database\predstlist.dat" For Input As #D
Do While Not EOF(D)
Line Input #D, str
'ListBox1.AddItem str
'peredat.ComboBox31.AddItem str
peredat.predst_nikoil.AddItem str
peredat.predst_draga.AddItem str
peredat.predst_rost.AddItem str
peredat.predst_cmd.AddItem str
peredat.predst_computershare.AddItem str
'peredat.ComboBox38.AddItem str
Loop
Close #D
Else
MsgBox "файл поврежден или отсутствует!"
End If
peredat.MultiPage1.Value = 0
End Function


Все забряканное - уже не работает (за исключением первого куска кода, где я закомментил строки, чтобы не было повтора.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Вылет в винду при попытке заполнить combobox

Сообщение arthur2 » 14.03.2011 (Пн) 18:47

Давай ещё раз (забудем, что оно вылетает, вспомним, что пошагово проходить код получается). Ты говоришь, что строка с add.item проходит, но комбик остается пустым. Раз комбик пустой, значит строка не выполнилась, а просто пропустилась. После этого надо посмотреть, что в err.number и в err.description.
Что выдала строка debug.print ?

Что находится в str? (не в файле, а что там после прочтения файла?

Ещё раз: для эксперемента попробуй добавлять в комбики не то, что прочитано в str, а что-нибудь заведомо безопасное, например "lalala" - всё равно вылетает? всё равно комбики пустые?

Сколько у тебя комбиков?
Попробуй вообще без файла, чтобы выяснить, а в комбиках ли дело:
Код: Выделить всё
for i=0 to много-много
   compo1.additem "lalala"
   combo2.additem "lalala"
<...>
  comboN.additem "lalala"
next
всё равно вылетает? всё равно комбики пустые?
Если да, то проделай то же самое в новом проекте - проблема осталась? а то может просто файл проекта битый какой-нибудь.
Артур
 
   

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Вылет в винду при попытке заполнить combobox

Сообщение alibek » 16.03.2011 (Ср) 22:57

Сделай пустой проект и добавлять по фрагментам (по 1-3 строкам) код из неработающего проекта (код, касающийся комбобокса).
Когда ошибка начнет воспроизводится, выложи код сюда.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 88

    TopList