На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> Обработка файлов в директории , Не могу открыть файл. Путь не найден.
    Написал нехитрый код перебора всех файлов в директории:

    ExpandedWrap disabled
          Do While Len(tmp) > 0
              tmp = Dir()
              TMP1 = "D:\8051\SAM7s\LCD_ILI9341_28_Font2\Fonts_ENG\01_Обычный\" + tmp
              'TMP1 = "D:\8051\SAM7s\LCD_ILI9341_28_Font2\Fonts_ENG\01_Обычный\Fonts_@Microsoft_YaHei.h"
              Okno1.Text = Okno1.Text & TMP1 & vbCrLf
              Okno1.Text = Okno1.Text & "D:\8051\SAM7s\LCD_ILI9341_28_Font2\Fonts_ENG\01_Обычный\Fonts_@Microsoft_YaHei.h" & vbCrLf
              Open TMP1 For Input As #1
              Close
              CNT = CNT + 1
          Loop


    Перебор файлов работает. Файлы в окне отображаются. Но при попытке открыть файл с заданием пути:

    ExpandedWrap disabled
              TMP1 = "D:\8051\SAM7s\LCD_ILI9341_28_Font2\Fonts_ENG\01_Обычный\" + tmp

    Приводит к остановке выполнения с кодом "путь не найден". Если задавать непосредственно:

    ExpandedWrap disabled
              TMP1 = "D:\8051\SAM7s\LCD_ILI9341_28_Font2\Fonts_ENG\01_Обычный\Fonts_@Microsoft_YaHei.h"


    То открытие происходит нормально. Хотя оба пути выдают в окне одинаковый результат:

    Цитата

    D:\8051\SAM7s\LCD_ILI9341_28_Font2\Fonts_ENG\01_Обычный\Fonts_@Microsoft_YaHei.h
    D:\8051\SAM7s\LCD_ILI9341_28_Font2\Fonts_ENG\01_Обычный\Fonts_@Microsoft_YaHei.h


    Код вывода в окно:

    ExpandedWrap disabled
              Okno1.Text = Okno1.Text & TMP1 & vbCrLf
              Okno1.Text = Okno1.Text & "D:\8051\SAM7s\LCD_ILI9341_28_Font2\Fonts_ENG\01_Обычный\Fonts_@Microsoft_YaHei.h" & vbCrLf


    Помогите понять - где ж грабли, а то я закипел.

    Спасибо.
      Цитата Димон Безпарольный @
      оба пути выдают в окне одинаковый результат

      Окну доверия - ноль. Получи их в двух переменных и сравнивай по одному символу. Ну и длину сравни.
        Вопрос решился. Добавил в цикл:

        ExpandedWrap disabled
                  If Len(tmp) = 0 Then Exit Do


        Хотя в цикле прописано условие:

        ExpandedWrap disabled
          Do While Len(tmp) > 0


        Но каким - то образом в tmp = Dir() все таки попадает строка нулевой длины.
        Сообщение отредактировано: Димон Безпарольный -
          Цитата Димон Безпарольный @
          каким - то образом в tmp = Dir() все таки попадает строка нулевой длины

          Потому что после присвоения строки нулевой длины отработает весь цикл, и только потом выполнится проверка. Правильный код должен быть, например, таким:

          ExpandedWrap disabled
                tmp = Dir("*.h") ' Первое присвоение
                Do While Len(tmp) > 0 ' Проверка непосредственно после присвоения
                    TMP1 = "D:\8051\SAM7s\LCD_ILI9341_28_Font2\Fonts_ENG\01_Обычный\" + tmp
                    'TMP1 = "D:\8051\SAM7s\LCD_ILI9341_28_Font2\Fonts_ENG\01_Обычный\Fonts_@Microsoft_YaHei.h"
                    Okno1.Text = Okno1.Text & TMP1 & vbCrLf
                    Okno1.Text = Okno1.Text & "D:\8051\SAM7s\LCD_ILI9341_28_Font2\Fonts_ENG\01_Обычный\Fonts_@Microsoft_YaHei.h" & vbCrLf
                    Open TMP1 For Input As #1
                    Close
                    CNT = CNT + 1
                    tmp = Dir() ' Следующее присвоение
                Loop


          Добавлено
          Хотя имхо разумнее выполнять перебор через FSO в цикле ForEach.
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0260 ]   [ 17 queries used ]   [ Generated: 19.04.24, 20:22 GMT ]