Цикл Do и For

Тема в разделе "Visual Basic", создана пользователем Fenomant, 18 июл 2010.

Статус темы:
Закрыта.
  1. Fenomant

    Fenomant Гость

    Доброго времени суток. Использую VB2010

    Код (LotusScript):
    Public CONFIG(0 To 11, 0 To 1) As String
    ...
    CONFIG(0, 0) = "ip"
    CONFIG(0, 1) = "127.0.0.1"
    CONFIG(1, 0) = "port"
    CONFIG(1, 1) = "1000"
    ...
    Код (LotusScript):
    Public Sub ConfigRead()
    FileOpen(1, "conf.ini", OpenMode.Input)
    Do Until EOF(1)
    PAKET_lbControlPaketSAVELIST.Items.Add("-------------------------") ' ListBox для проверки
    For i As Integer = 0 To CONFIG.Length / 2 Step 1
    If InStr(1, LineInput(1), CONFIG(i, 0)) Then
    CONFIG(i, 1) = Mid(LineInput(1), CONFIG(i, 0).Length + 3)
    Exit For
    End If
    Next i
    Loop
    FileClose(1)
    End Sub
    Вопрос:
    Почему цикл DO (чтения из файла) выполняется только 1 раз, и только до цикла FOR?
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    проверьте, что такое CONFIG.Length / 2
    мб, там ошибка

    Добавлено: целочисленное деление, кста, вроде через \
     
  3. Fenomant

    Fenomant Гость

    CONFIG - это глобальный массив типа String, объявление и заполнения которого показзано в первом учаске кода

    Пробывал просто целое число указывать, цикл работает так же (т.е. один раз)

    п.с. Содержимое файла conf.ini:

    Код (LotusScript):
    -----------------------------
    *** Сетевые настройки FOH ***
    -----------------------------
    Адрес сервера
    ip = 127.0.0.1

    Порт на котором FOH будет принимать входящие подключения с клиента
    port = 1080
    Т.е. Суть процедуры такова:
    1. Открываем файл, читаем с него построчно
    2. Каждую строку сверям с CONFIG(i, 0)
    где i - переменная цикла
    3. Если искомая строка найденна, то в CONFIG(i, 1) заносим значения строки
     
  4. Fenomant

    Fenomant Гость

    Изменённая процедура отработала должным образом:

    Код (LotusScript):
    Public Sub ConfigRead()
    Dim ii As Integer = 0
    Dim buffer As String
    FileOpen(1, "conf.ini", OpenMode.Input)
    Do Until EOF(1)
    buffer = LineInput(1)
    For i = 0 To CONFIG.Length \ 2
    If InStr(1, buffer, CONFIG(i, 0)) Then
    CONFIG(i, 1) = Mid(buffer, CONFIG(i, 0).Length + 3)
    Exit For
    End If
    Next i
    Loop
    FileClose(1)
    End Sub
    Подозреваю, что в старой процедуре, LineInput(1), каждый раз при вызове извлекала след. строку из файла => чтение из файла заканчивалось ещё в цикле FOR

    Тему можно закрывать
     
  5. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    ок, хорошо, что разобрались.
    Dim ii As Integer = 0 зачем? наверно, там просто i
    кстати, тему закрыть можете сами из меню Опции.
     
  6. Fenomant

    Fenomant Гость

    Это от экспериментов осталось :happy:

    Хорошо

    Не, где закрывать тему я невижу. В опциях только:
    Подписка на тему
    Сообщить другу
    Версия для печати
    Скачать тему
    Подписка на этот форум
    Режимы отображения
    Переключить на: Древовидный
    Стандартный
    Переключить на: Линейный
     
  7. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    должна быть самой верхней, перед подпиской. ок, я закрою.
    оказывается, эта фишка отключена для группы Новенький, не знала.
     
Загрузка...
Похожие Темы - Цикл For
  1. gx6060
    Ответов:
    2
    Просмотров:
    421
  2. Maddy101d
    Ответов:
    3
    Просмотров:
    1.015
  3. Vadik(R)
    Ответов:
    4
    Просмотров:
    8.950
  4. gx6060
    Ответов:
    1
    Просмотров:
    278
  5. Alexsandraaa
    Ответов:
    7
    Просмотров:
    179
Статус темы:
Закрыта.

Поделиться этой страницей