Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/47: Рейтинг темы: голосов - 47, средняя оценка - 4.62
 Аватар для STGE
773 / 578 / 324
Регистрация: 17.06.2009
Сообщений: 1,188

Поиск файла в TP

21.12.2009, 22:53. Показов 9107. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравия желаю!
Прошу помочь по следующему вопросу:
Как организовать поиск файла в программе (созданной в TP)?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2009, 22:53
Ответы с готовыми решениями:

Реализовать поиск заданного файла в древе каталогов и поиск указанной информации в этом файле
Имеется много папок в каждой папке есть файл proc.txt, как можно по всем этим папкам пройтись и из каждой папки в этом файле достать...

Поиск файла, поиск перестает работать
код поиска файла, рабочий. Подсмотрен от сюда:http://www.kansoftware.ru/?tid=1721 unit Unit1; interface uses Windows,...

Организовать меню: Создание файла, Просмотр файла, Поиск, Выход
часть задания задание Организовать меню: Создание файла, Просмотр файла, Поиск, Выход. В файле содержатся структуры со сведениями о...

5
21 / 20 / 7
Регистрация: 02.11.2009
Сообщений: 40
21.12.2009, 22:57
С помощью функций FindFirst и FindNext.
0
 Аватар для STGE
773 / 578 / 324
Регистрация: 17.06.2009
Сообщений: 1,188
21.12.2009, 22:59  [ТС]
Распишите пожалуйста по-подробнее.
0
21 / 20 / 7
Регистрация: 02.11.2009
Сообщений: 40
21.12.2009, 23:07
кстати для этих процедур нужно использовать библиотеку WinDos


Процедура FINDFIRST.
Возвращает атрибуты первого из файлов, зарегистрированных в указанном каталоге, формат обращения:
FINDFIRST (<маска>, <атрибуты>, <имя>)
<маска> - строковое выражение, содержащее маску файла;
<атрибуты> - выражение типа BYTE, содержащее уточнение к маске (атрибуты);
<имя> - переменная типа SEARCHREC, в которой будет возвращено имя файла.
Байт <атрибуты> содержит двоичные разряды (биты), уточняющие, к каким именно файлам разрешен доступ при обращении к процедуре FINDFIRST. Вот как объявляются файловые атрибуты в модуле DOS.TPU:
const
Readonly = $01; {только чтение}
Hidden = $02; {скрытый файл}
SysFile = $04; {системный файл}
VolumeID = $08; {идентификатор тома}
Directory = $10; {имя подкаталога}
Archive = $20; {архивный файл}
AnyFile = $3F; {любой файл}
Комбинацией бит в этом байте можно указывать самые разные варианты, например $06 - выбирать все скрытые и/или системные файлы.
Результат работы процедуры FINDFIRST возвращается в переменной типа SEARCHREC. Этот тип в модуле DOS.TPU определяется следующим образом:
Pascal
1
2
3
4
5
6
7
8
type
  SearchRec = record
    Fill: array [1..21] of byte;
    Attr: byte;
    Time: longint;
    Size: longint;
    Name: string[12]
end;
Здесь
Attr - атрибуты файла (см. выше);
Time - время создания или последнего обновления файла; возвращается в упакованном формате; распаковать параметр можно процедурой UNPACKTIME (см.ниже);
Size - длина файла в байтах;
Name - имя и расширение файла.
Для распаковки параметра TIME используется процедура
UNPACKTIME(Time: Longint; var T: DateTime);
В модуле DOS.TPU объявлен следующий тип DateTime:
Pascal
1
2
3
4
5
6
7
8
9
type
  DateTime = record
    year: word;         {год в формате 19XX}
    month: word;        {месяц 1..12}
    day: word;          {день 1..31}
    hour: word;         {час 0..23}
    min: word;          {минуты 0..59}
    sec: word           {секунды 0..59}
  end;
Результат обращения к процедуре FINDFIRST можно проконтролировать с помощью функции DOSERROR типа WORD, которая возвращает значения:
0 - нет ошибок;
2 - не найден каталог;
18 - каталог пуст (нет указанных файлов).

Добавлено через 1 минуту
Процедура FINDNEXT.
Возвращает имя следующего файла в каталоге. Формат обращения:
FINDNEXT (<сл.файл>)
Здесь
<сл.файл> - запись типа SEARCHREC (см. выше), в которой возвращается информация о файле.
Следующая простая программа иллюстрирует способ использования процедур FINDFIRST и FINDNEXT. Программа выводит на экран список всех PAS-файлов текущего каталога:
Pascal
1
2
3
4
5
6
7
8
9
10
11
Uses DOS;
var
  S: SearchRec;
begin
  FindFirst('*.pas',AnyFile,S);
  while DosError = 0 do
    with S do
      WriteLn(Name:12,Size:12);
      FindNext(S)
    end
end.
0
1 / 1 / 0
Регистрация: 03.04.2016
Сообщений: 4
22.05.2017, 15:46
Цитата Сообщение от DenDS Посмотреть сообщение
Pascal
Pascal
1
2
3
4
5
6
7
8
9
10
11
Uses DOS;
var
 S: SearchRec;
begin
 FindFirst('*.pas',AnyFile,S);
 while DosError = 0 do
 with S do
 WriteLn(Name:12,Size:12);
 FindNext(S)
 end
end.
Вот это вообще компилироваться не будет, хотябы из-за end в десятой строчке.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
22.05.2017, 20:46
Puaseil,
вот и исправьте:
Pascal
6
  while DosError = 0 do begin
Добавлено через 1 минуту
или
Pascal
7
    with S do begin
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.05.2017, 20:46
Помогаю со студенческими работами здесь

Реализовать поиск файла в каталоге и вывод на консоль заданных атрибутов найденного файла
Приведите, пожалуйста, пример кода программы, которая ищет файлы, находящиеся в каталоге, и выдаёт на консоль имя, тип и дату последней...

Поиск на компьютере INI-файла и копирование найденного файла в папку определенного пользователя
Нужна ваша помощь! Нужно найти файл с расширением .ini и скопировать его в папку Пользователи\(имя пользователя. на каждом компьютере...

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

Поиск заданного файла в заданной папке (путь и имя файла задаются в командной строке)
Добрый вечер! Как сделать поиск заданного файла в заданной папке(путь и имя файла задаются в командной строке) это надо сделать с...

Поиск в каталоге нужного файла и создание при его наличии нового файла с тем же именем, но с другим раширением
Нужно сделелать проверку на наличие файла &quot;Пример.т01&quot; в катологе D:\Temp\ и при условии что они есть создать файл (пустой, в томже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. fontSize": 18, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations":. . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru