![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
Unreal |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 15 Репутация: ![]() ![]() ![]() |
Здравствуйте.
Нужна помощь... Как открыть файл, не зная его имя (задан только каталог, где находится)... Заранее спасибо. |
![]() ![]() |
Altair |
![]()
Сообщение
#2
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Какие-то данные о файле все же нужны.
Открыть его можно, в следующих случаях:
FindFirst и в некоторых случаях FindNext. Обе они находятся в модуле DOS. То есть для их использования, подключаем его: Код Uses Dos, {... другие модули}; {...} Вызывается процедура следующим образом: в разделе переменных, надо описать переменную, с типом SearchRec Например: Код Uses DOS; {...}Var A: SearchRec; {... другие переменные} Теперь в программе мы можем вызвать процедуру FindFirst: Код {...} Begin FindFirst('*.TXT',AnyFile,A); {...} end. Поясняю: Мы ищем ПЕРВЫЙ файл с расширением TXT в текущем каталоге, который может иметь любые(AnyFile) атрибуты. Данные о файле (если он найден), помещаются в переменную A (она имеет тип SearchRec). Тип SearchRec имеет следующую структуру: Код Type SearchRec = Record Fill : Array [1..21] Of Byte; Attr : Byte; Time : Longint; Size : Longint; Name : Array [0..12] Of Char; End; Если файл не найден, то в переменную DosError помещается код ошибки 18 (нет больше файлов). Если нам надо продолжить поиск (какие-то условия нас не устраивают), то мы вызываем процедуру FindNext ... Но для ее вызова уже не надо указывать тип искомых файлов( их маску и атрибуты). Процедура FindNext вызывается всегда только после FindFirst. Теперь, когда нужный файл найден: Код { связываем файловую переменную с именем этого файла } Assign (f,a.name); { и открываем его } Reset(f) Примечание: Если файл текстовый, то открыть его таким образом можно только на чтение, или только на дозапись. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 15:10 |