Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.14.6.194] |
|
Сообщ.
#1
,
|
|
|
Написал нехитрый код перебора всех файлов в директории:
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 Перебор файлов работает. Файлы в окне отображаются. Но при попытке открыть файл с заданием пути: 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" То открытие происходит нормально. Хотя оба пути выдают в окне одинаковый результат: Цитата 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 Код вывода в окно: 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 Помогите понять - где ж грабли, а то я закипел. Спасибо. |
Сообщ.
#2
,
|
|
|
Цитата Димон Безпарольный @ оба пути выдают в окне одинаковый результат Окну доверия - ноль. Получи их в двух переменных и сравнивай по одному символу. Ну и длину сравни. |
Сообщ.
#3
,
|
|
|
Вопрос решился. Добавил в цикл:
If Len(tmp) = 0 Then Exit Do Хотя в цикле прописано условие: Do While Len(tmp) > 0 Но каким - то образом в tmp = Dir() все таки попадает строка нулевой длины. |
Сообщ.
#4
,
|
|
|
Цитата Димон Безпарольный @ каким - то образом в tmp = Dir() все таки попадает строка нулевой длины Потому что после присвоения строки нулевой длины отработает весь цикл, и только потом выполнится проверка. Правильный код должен быть, например, таким: 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. |