FreeBasic
Главная
Вход
Регистрация
Четверг, 13.11.2025, 20:16Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Функция Dir нереэнтерабельна
zamabuvaraeuДата: Понедельник, 10.11.2025, 19:54 | Сообщение # 1
Полковник
Группа: Друзья
Сообщений: 177
Репутация: 5
Статус: Offline
Возьмём простой для получения файлов в директории:

Код
Dim filename As String = Dir("*.*")

Do While Len(filename)
   Print filename
   DoSomething()
   
   filename = Dir()
Loop
Если функция DoSomething() внутри себя тоже будет обходить каталоги, то это испортит весь внешний цикл обхода каталогов:

Код
Sub DoSomething()
   ' Это испортит внешний цикл
   ' и обход директорий извне сломается
   file = Dir("*.bas")
End Sub

Когда DoSomething() находится в библиотеке, такая библиотека будет портить всю программу.
 
DarkDemonДата: Вторник, 11.11.2025, 09:07 | Сообщение # 2
Генерал-майор
Группа: Друзья
Сообщений: 270
Репутация: -1
Статус: Offline
Да как бы всё верно пишешь. Но тут вопрос конкретных потребностей.
А их в принципе немного:
1) Обойти каталог и подкаталоги, не вычисляя что-то в процессе
2) Обойти каталог и подкаталоги, вычисляя что-то (твой случай)
3) Просто обойти каталог

И мне кажется такой простой функционал можно использовать только в 1 и 3 случае.
Насколько я понял тебе важно обойти подкаталог и получить быстрый результат, не входя
в другие подкаталоги, т.к. сканирование занимает время, иногда большое.

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

Добавлено (11.11.2025, 09:16)
---------------------------------------------
Ну и опять же, ты же вроде под винду пишешь, зачем тебе кроссплатформа? А функции сканирования были
в библиотека Стаса, выдерни их из Window9, делов то...

 
zamabuvaraeuДата: Вторник, 11.11.2025, 17:38 | Сообщение # 3
Полковник
Группа: Друзья
Сообщений: 177
Репутация: 5
Статус: Offline
Дело не в этом.

Дело в том, что кто‐то в другой библиотеке может вызвать Dir() и сломать мою программу.
 
DarkDemonДата: Вторник, 11.11.2025, 19:04 | Сообщение # 4
Генерал-майор
Группа: Друзья
Сообщений: 270
Репутация: -1
Статус: Offline
Цитата zamabuvaraeu ()
Дело в том, что кто‐то в другой библиотеке может вызвать Dir() и сломать мою программу.

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

Этот DIR пришёл из времён DOS, оно там так и работает, насколько мне известно. Авторы компилятора
вынуждены поддерживать совместимость, можно было всё сделать по-другому, но почему-то не сделали.
 
zamabuvaraeuДата: Среда, Вчера, 13:00 | Сообщение # 5
Полковник
Группа: Друзья
Сообщений: 177
Репутация: 5
Статус: Offline
Вот так архаизмы 1988 года мешают языку развиваться и становиться современным в 2025 году.
 
DarkDemonДата: Среда, Вчера, 20:29 | Сообщение # 6
Генерал-майор
Группа: Друзья
Сообщений: 270
Репутация: -1
Статус: Offline
Цитата zamabuvaraeu ()
Вот так архаизмы 1988 года мешают языку развиваться и становиться современным в 2025 году.

Моё мнение: что развитие в таком формате в принципе не может быть адекватным.
Т.е. забить хрен на IDE, на первичную идеологию языка, фигарить компили на 3 платформы, когда одну
трудно обслужить и оттестить(это просто факт и мало кто будет спорить). И ещё поддерживать
устаревший DOS, да ещё в виде DPMI.
Когда за 25 лет меняется куча людей в разрабах, каждый тянет что-то в какую-то сторону,
получается - лебедь, рак и щука, даже если что-то изначально и было - они это просто разодрали.

Но как есть так есть, дарёному КОНЮ в зубы не смотрят, народная мудрось!

Вообще специфика понятная, тут можно пошутить на тему "Библиотеки есть? А если найду?",
но как-то и без шуток веселее некуда...
 
  • Страница 1 из 1
  • 1
Поиск: