Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Dim FileName As String






и очистим Text1 (на всякий случай)

Text1.Text = " "

Присвоим нашей переменной значение, которое вернет функция Dir. Обратите внимание, что имя файла состоит из звездочек. Это потому, что мы хотим получить имена всех существующих файлов, независимо от имени и расширения. Допустимо также использовать знак? (например, если мы хотим получить имена всех файлов с расширение txt, имена которых одинаковы, кроме последнего знака (file1.txt, file2.txt... file9.txt), можно написать " file?. txt"


FileName = Dir(" D: \MyPicture\Disk_001\*.*")

Сейчас функция Dir сработала первый раз (по полному пути) и теперь знает, в какой директории мы ведем поиск. Далее проверяем, может в этой папке вообще файлов нет

If FileName < > " " Then

если наша переменная, которая должна была получить имя от функции Dir - не пустая, значит все в порядке, файлы есть. И теперь организовываем цикл Do...While, который будет выполнятся, пока функция Dir не вернет пустую строку (а это значит, что файлов, удовлетворяющих нашему пути " D: \MyPicture\Disk_001\*.*" нет.

Do While FileName < > " "

Теперь дописываем имя полученного файла в тектбокс Text1 (константу vbCrLf ставим, чтобы у нас каждое новое имя файла писалось с новой строки, если конечно свойство MultiLine текстбокса стоит в состоянии True)

Text1.Text = Text1.Text & FileName & vbCrLf

теперь нам в этом же цикле нужно снова запустить функцию Dir, на сей раз без аргументов, просто скобочки (а можно и вообще без них

FileName = Dir() ' или FileName = Dir

Теперь закроем цикл, закроем условие If и закроем процедуру Command1_Click

Loop
End If
End Sub

Вот и все. Можете проверить.
Еще раз поясняю работу Dir для выборки группы файлов. Первый вызов функции имеет полный путь до файла и маску имени файла (с использованием * и?). При этом функция возвращает первое попавшееся имя файла, удовлетворяющее маске. Второй и последующие вызовы - функция не имеет аргументов и возвращает имена файлов, удовлетворяющих маске в произвольном порядке. После того, как все имена файлов возвращены и в директории нет больше файлов с именами, удовлетворяющими нашей маске, функция Dir возвращает значение " пустая строка" (" "). Это сигнал к тому, что пора прекратить вызовы функции Dir. Если снова вызвать функцию Dir без аргументов, то это вызовет ошибку выполнения. Вызывать функцию можно теперь по-новой, с полным путем до файла.
Поскольку мы не использовали второй аргумент " атрибут", то по умолчанию он равен 0, т.е. выбираются файлы. Если мы поставим атрибут 16 - папка, то это вовсе не значит, что функция Dir будет выбирать для нас только папки. Она выберет и папки и файлы, входящие в указанную нами в пути директорию. Есть прием, который позволяет отделить файлы и оставить только папки. Он приведен в Хелпе для пятого Бейсика.
Кроме того, поскольку Функция Dir возвращает файлы в произвольном порядке, то для достойного вывода списка файлов на экран, их надо отсортировать хотя бы в алфавитном порядке. О сортировке мы будем говорить, когда будем рассматривать массивы.

Совет: Прежде чем открывать файл, проверьте, существует и он, с помощью функции Dir. Это позволит избежать ненужных ошибок.

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

Копирование, уничтожение, переименование и прочие действия с папками и файлами.
  • оператор Kill путь - уничтожает файл (или файлы, если используются подстановочные знаки * или?) с диска (пример Kill " c: \mypicture\*.jpg")
  • оператор FileCopy " копируемый файл", " новое имякопируемого файла" - копирует файл. Лучше писать полный путь в обоих аргументах. (например: FileCopy " c: \referat.txt", " c: \allreferats\referat4.txt"). Открытый (например оператором Open) файл скопировать нельзя. Это вызовет ошибку выполнения.
  • оператор Name " староеимяфайла" As " новоеимяфайла" - переименовывает файл или каталог. При этом если указать разные пути, то файл перенесется под другим именем. А если пути одинаковые, а имена разные, то произойдет переименование файла. (пример: Name " c: \autoexe.bat" As " d: \myfile.bat")
  • оператор RmDir " путь" - уничтожает существующую пустую папку (пример RmDir " c: \Programs\Project"). При попытке удалить непустую папку возникает ошибка. Внимание, если не указать полный путь, оператор удалит папку из текущего каталога (пример RmDir " PAPKA").
  • оператор MkDir " путь " - создает новую папку (пример MkDir " c: \Programs\Project"). Если полный путь не указан, папка создается в текущем каталоге. (пример MkDir " Новый проект").
  • оператор СhDir " путь" - изменяет текущий каталог (а не диск) на указываемый в пути.
  • функция CurDir (" диск") - возвращает текущий диск. Аргумент диск необязательный.
  • оператор ChDrive " диск" - изменяет текущий диск. Аргумент диск - обязательный, в нем используется только первый символ.

В принципе, здесь все просто, поэтому специальной программой я иллюстрировать это не буду.

Кроме того, до кучи, хочу сказать, что из своей программы ты можешь запустить любой исполняемый файл, например.exe в ассинхронном режиме (т.е. он будет выполняться независимо от выполнения твоей программы, из которой ты его вызвал) с помощью функции

Shell (" путь до файла программы", " вид окна, в котором откроется программа")

Путь - это понятно, а второй аргумент - константа, которая может принимать следующие значения:

Имя константы Числовое значение константы Вид окна, в котором откроется программа
vbHide   скрытое окно, фокус
vbNormalFocus   свой размер, фокус
vbMinimizedFocus   в виде значка в контрольной панели, фокус
vbMaximizedFocus   в полный экран с фокусом
vbNormalNoFocus   свой размер без фокуса
vbMinimizedNoFocus   в виде значка в контрольной панель, без фокуса

Пример использования: ProgGO = Shell(" C: \Program Files\BANDIT.EXE", 1) запускает программу " Однорукий бандит" с тем размером экрана, которая она имеет. Фокус будет на окне программы. В переменную, которую я назвал, например, ProgGO (ее надо объявить Dim ProgGo) возвращается идентификационный номер запущеной программы. А если программу запустить не удалось, возникает ошибка.

Извини за долгое оступление, но я посчитал своим долгом вывалить все это на тебя. Хоть и не сложно, но это понадобиться. Теперь, наконец, вернемся к нашей программе-тесту. Мы уже объявили все переменные, теперь сделаем собственную процедуру, которая будет грузить вопросы, ответы и баллы в форму. Назовем ее Loading().


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал