Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> После loop функция прекращается 
V
    Опции темы
neiron
Дата 18.4.2006, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 18.4.2006
Где: Краснодар

Репутация: 3
Всего: 4



Не пойму в чём проблема:

Код

'загрузка файла данных

Sub Zag_Dan(NameDanFile)
    UmZagr = False
    Open NameDanFile For Input Access Read As #1
       i = 0
    Do While EOF(1) = False
        i = i + 1
    Loop
    ReDim insolar(i - 1)
    i = 0
    Seek #1, 0
    Do While EOF(1) = False
        Input #1, insolar(i)
        insolar(i) = insolar(i) / 10
        i = i + 1
        Kolinsolar = i - 1
    Loop
End Sub


В общем, выход из процедуры происходит после выполнения первого цикла.
Как я понимаю, дело не в коде, а в настройках vb... что может быть?
в других местах программы do...while тоже есть, есть вложенные, и всё работает... Ток те места я писал до переустановки винды (а вместе с ней и самого vb).
Где флажок поставить?)))

 
PM MAIL   Вверх
Akina
Дата 18.4.2006, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(neiron @  18.4.2006,  16:19 Найти цитируемый пост)
выход из процедуры происходит после выполнения первого цикла

в т.ч. при пошаговом выполнении? бей код на блоки - где-то накосячил. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
boevik
Дата 18.4.2006, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Проблематичный код.
Если EOF вернет false, то цикл бесконечен, потому что нет чтения из файла.

В этом случае, файл видемо пуст и EOF возвращает true, поетому цикл не выполняется, значение i остается равным 0
и при попытке выполнить redim размером -1 возникает ошибка.
Могу предположить, чтп в вызывающей функции есть On Error Resume Next поэтому, управления передается команде следующей за вызовом функции Zag_Dan. 


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
neiron
Дата 18.4.2006, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 18.4.2006
Где: Краснодар

Репутация: 3
Всего: 4



Akina, ессно пробовал... loop проходит и переходит к следующей процедуре, а именно к mainform.
Если убираю первый блок do...loop, то второй работает нормально... выход происходит именно после первого завршённого цикла (сам цикл работает нормально).


boevik, чтение из файла есть - иначе как бы i изменялось... проверено на пошаговой;)
а на redim ошибка не возникает, так как до redim дело вообще не доходит))) А файл не пустой уж точно - при прямом открытии (пропись файла и его длины в коде) всё работает как надо...
On Error Resume Next нет... А если ошибка (cancel) и случается, то вообще не приводит к вызову Zag_dan. Но вызов есть...

Код

Private Sub OpenDan_Click()
    On Error GoTo ErrGo
    CDDan.ShowOpen
    Zag_Dan (CDDan.FileName)
    Exit Sub
ErrGo:
    Exit Sub
    End Sub


Всё-таки я думаю, что ошибка именно в vb самом... поскольку пробуя вставлять всё тот же do loop в другие проццедуры, получал то же самое - исполняется первый блок, а всё что за ним просто игнорируется...  smile   

Это сообщение отредактировал(а) neiron - 18.4.2006, 21:31
PM MAIL   Вверх
cardinal
Дата 18.4.2006, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Цитата(neiron @  18.4.2006,  19:29 Найти цитируемый пост)
Всё-таки я думаю, что ошибка именно в vb самом...

Если в компиляторе ошибка, то это не компилятор, а кусок г252'а. Перед тем как такое говорить я бы лучше ковырял свой код.

А вообще тебе уже сказали
Цитата(boevik @  18.4.2006,  13:46 Найти цитируемый пост)
Если EOF вернет false, то цикл бесконечен, потому что нет чтения из файла.

Что непонятно? 


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
neiron
Дата 18.4.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 18.4.2006
Где: Краснодар

Репутация: 3
Всего: 4



всё понял, спасибо... smile 
 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0790 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.