TSearchRec — Тип Delphi

Функции и процедуры Delphi. Справочник.

Функция FindNext( var F: TSearchRec ): Integer;

Описание
Функция используется в цепочке FindFirst — FindNext — FindClose для повторного поиска файла.
Первый поиск осуществляется с помощью функции FindFirst. Функция FindNext возвращает следующий найденный файл, удовлетворяющий условиям поиска определенным при вызове функции FindFirst. В случае успешного выполнения, функция FindNext возвращает 0, а в случае возникновения ошибки — код ошибки Windows.
По окончанию поиска необходимо высвободить память с помощью функции FindClose.

TSearchRec дата создания

01.10.2010, 12:15

Дата создания
Короче вот function GetFileDateTime(FileName: string): TDateTime; var intFileAge: LongInt;.

Дата создания документа
Как прописать, дату создания текстового документа?

Дата и дата+10 дней в запросе
Доброе время суток! Пишу прогу, работающую с базой DB2. Стоит следующая задача: необходимо.

Дата создания файла
Добрый день. Вот код, который выдает дату создания файла, но почему то не правильно. И при каждом.

Задача с TSearchRec
Здравствуйте, насколько мне известно, в переменной типа TSearchrec в массиве хранятся имена файлов.

TSearchRec — Тип Delphi

Where Attr can have these values :

faAnyFile : Any file
faReadOnly : Read-only files
faHidden : Hidden files
faSysFile : System files
faVolumeID : Volume ID files
faDirectory : Directory files
faArchive : Archive files

Note : TFileName is a simple string type, but is used to hold file names.

TSearchRec — Тип Delphi

Атрибуты файла. Поиск файла

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

ExcludeAttr: Integer; (He используется>

обеспечивает хранение характеристик файла после удачного поиска. Дата и время создания файла хранятся в формате MS-DOS, поэтому для получения этих параметров в принятом в Delphi формате TDateTime необходимо использовать следующую функцию:

function FileDateToDateTime(FileDate: Integer): TDateTime;

Обратное преобразование выполняет функция

function DateTimeToFileDate(DateTime: TDateTime): Integer;

Свойство Attr может содержать комбинацию следующих флагов-значений:

  • faReadOnly — только для чтения;
  • faDirectory — каталог;
  • faHidden — скрытый;
  • faArchive — архивный;
  • faSysFile — системный;
  • faAnyFile — любой.
  • favoiumeio — метка тома;

Для определения параметров файла используется оператор AND :

if (SearchRec.Attr AND faReadOnly) > 0

then ShowMessage(‘Файл только для чтения’);

Непосредственно для поиска файлов используются функции FindFirst и FindNext .

function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;

находит первый файл, заданный полным маршрутом Path и параметрами Attr (см. выше). Если заданный файл найден, функция возвращает 0, иначе — код ошибки Windows. Параметры найденного файла возвращаются в записи F типа TSearchRec .

function FindNext(var F: TSearchRec): Integer;

применяется для повторного поиска следующего файла, удовлетворяющего критерию поиска. При этом используются те параметры поиска, которые заданы последним вызовом функции FindFirst . В случае удачного поиска возвращается 0.

Для освобождения ресурсов, выделенных для выполнения поиска, применяется функция:

procedure FindClose(var F: TSearchRec);

В качестве примера организации поиска файлов рассмотрим фрагмент исходного кода, в котором маршрут поиска файлов задается в однострочном текстовом редакторе DirEdit , а список найденных файлов передается в компонент TListBox .

procedure TForml.FindBtnClick(Sender: TObject);

FindFirst(DirEdit.Text, faArchive + faHidden, SearchRec);

while FindNext(SearchRec) = 0 do

НОВОСТИ ФОРУМА
Рыцари теории эфира
01.10.2020 — 05:20: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Youtube]69vJGqDENq4[/Youtube][/center]
[center]14:36[/center]
Osievskii Global News
29 сент. Отправлено 05:20, 01.10.2020 г.’ target=_top>Просвещение от Вячеслава Осиевского — Карим_Хайдаров.
30.09.2020 — 12:51: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Ok]376309070[/Ok][/center]
[center]11:03[/center] Отправлено 12:51, 30.09.2020 г.’ target=_top>Просвещение от Дэйвида Дюка — Карим_Хайдаров.
30.09.2020 — 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Youtube]VVQv1EzDTtY[/Youtube][/center]
[center]10:43[/center]

интервью Раввина Борода https://cursorinfo.co.il/all-news/rav.
мой телеграмм https://t.me/peshekhonovandrei
мой твиттер https://twitter.com/Andrey54708595
мой инстаграм https://www.instagram.com/andreipeshekhonow/

[b]Мой комментарий:
Андрей спрашивает: Краснодарская синагога — это что, военный объект?
— Да, военный, потому что имеет разрешение от Росатома на манипуляции с радиоактивными веществами, а также иными веществами, опасными в отношении массового поражения. Именно это было выявлено группой краснодарцев во главе с Мариной Мелиховой.

[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]

Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html

[center][b]Сон разума народа России [/center]

[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]

Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html

[center][b]Сон разума народа России [/center]

TSearchRec — Тип Delphi

Описание
Функция используется в цепочке FindFirst — FindNext — FindClose для повторного поиска файла. Первый поиск осуществляется с помощью функции FindFirst. Функция FindNext возвращает следующий найденный файл, удовлетворяющий условиям поиска определенным при вызове функции FindFirst. В случае успешного выполнения, функция FindNext возвращает 0, а в случае возникновения ошибки — код ошибки Windows. По окончанию поиска необходимо высвободить память с помощью функции FindClose.

TSearchRec — Тип Delphi

Как мне задать условие поиска только не ReadOnly файлов. Почему-то указание аттрибута faAnyFile and not faReadOnly для функции FindFirst не срабатывает.

Надо (Attr and faReadOnly)<>faReadOnly.

> Почему-то указание аттрибута faAnyFile and not faReadOnly для функции FindFirst не срабатывает.
Странно, должно срабатывать. Может быть в чем-то другом ошибка?

> harisma (22.06.2007 17:17:00) [0]

Ошибка в 17 строке

> Dimaxx (23.06.2007 03:18:01) [1]

Ты не понял вопроса или не понимаешь как работает ДОС и его наследники и Паскаль

Такой код действительно не работатет.

procedure TForm1.Button1Click(Sender: TObject);
var
Rec: TSearchRec;
begin
if FindFirst(«C:\*.*»,faAnyFile and (not faReadOnly),Rec) = 0 then begin
try
repeat
ListBox1.AddItem(Rec.Name,nil);
until FindNext(Rec) <> 0;
finally
FindClose(Rec);
end;
end;
end;

Похоже, что это баг. Смотрим вместе:

function FindFirst(const Path: string; Attr: Integer;
var F: TSearchRec): Integer;
const
faSpecial = faHidden or faSysFile or faVolumeID or faDirectory;
<$IFDEF MSWINDOWS>
begin
// Что означает следующая строчка? Следовало бы сделать так:
// F.ExcludeAttr := not Attr; Иначе атрибуты, не входящие в faSpecial
// никогда не попадут в список исключаемых
F.ExcludeAttr := not Attr and faSpecial;
F.FindHandle := FindFirstFile(PChar(Path), F.FindData);
if F.FindHandle <> INVALID_HANDLE_VALUE then
begin
Result := FindMatchingFile(F);
if Result <> 0 then FindClose(F);
end else
Result := GetLastError;
end;


> Ты не понял вопроса или не понимаешь как работает ДОС и
> его наследники и Паскаль

А по одной строке не понять что именно автор хотел спросить. Какой вопрос — такой ответ. :)

Что Вы имели ввиду? Что это за 17 строка?

Это стандартный ответ, когда не видя код нельзя со 100% уверенностью сказать где ошибка. Приведи код — посмотрим.

Ясно. Тогда вот фрагмент кода:

for i := 0 to Length(LMasks) — 1 do
if (FindFirst(LDIR + LMasks[i], AAttr and (not faDirectory), LSR) = 0) then
try
repeat
AEnumPathFunc(LDIR, LSR, AAdditionalInfo);
until not (FindNext(LSR) = 0);
finally
FindClose(LSR);
end;

где:
LMasks — стринговый массив масок файлов. Возьмем для простоты из одного элемента («*.*»)
LDIR — корневая директория
LSR — TSearchRec
AAttr = мой набор аттрибутов файлов, которые надо найти (faAnyFile and not faReadOnly) (передается извне)
AEnumPathFunc — некоторая функция, выполняющая сохранение имен найденых файлов в моей структуре.

Об остальном мы должны сами догадаться

А что же тут еще не ясного в этом фрагменте кода? Все переменные я описал. Параметры класс функции не существенны, так как поиск файла ведется через FindFirst, FindNext — то есть стандартным методом. Вот только накладываемый мною фильтр на атрибуты искомых файлов почему-то не работает.


> [11] harisma (25.06.07 15:14)

hFind := FindFirstFile(LDIR + LMasks[i], wfd);
if (hFind <> INVALID_HANDLE_VALUE) then begin
repeat
if ((wfd.dwFileAttributes and FILE_ATTRIBUTE_READONLY) = 0) then
// наш файл

until not FindNextFile(hFind, wfd);
end;

А значения мы должны сами придумывать.

> Похоже, что это баг. Смотрим вместе:
В D7 все корректно:
F.ExcludeAttr := not Attr and faSpecial;

> [13] Anatoly Podgoretsky (25.06.07 15:31)
А какая разница, какие значения передаются, кроме значения аттрибутов? Подставьте любую корневую директорию, например С:\WinNT\system32 и задайте маску *.*.

> [14] Desdechado (25.06.07 15:56)
В D5 код такой-же, однако находит все файлы подряд, включая и имеющие аттрибут ReadOnly, а вот именно они то мне и не нужны.

> harisma (25.06.2007 16:09:15) [15]

> А какая разница, какие значения передаются, кроме значения аттрибутов? Подставьте любую корневую директорию, например С:\WinNT\system32 и задайте маску *.*.

Вот сразу и получили ошибку, попробуй сделать заявленую у тебя конкатенацию.

> Вот сразу и получили ошибку, попробуй сделать заявленую у тебя конкатенацию.

Ответ не в тему. Я знаю, что корневая директория должна заканчиваться символом «\». Проблема в том, что я не могу отфильтровать не ReadOnly файлы стандартными методами, а вы мне всякую ерунду про параметры и их значения толкуете.


> [17] harisma (25.06.07 16:44)

давно бы уже сделал как в [12]
непродуктивный базар

> harisma (25.06.2007 16:44:17) [17]

А нам прикажешь догадываться?
Не тема а базар, ничего предметного.

TSearchRec Delphi назад

Я не знаю точно, как объяснить мой вопрос. Вот моя попытка объяснить: функция FindNext (SearchRec) получит меня следующий файл из каталога. В моем приложении я ищу иногда хожу в отстающие несколько файлов с моим текущим индекса SearchRec. Так как я могу это сделать?

Так что я ищу для противиться из FindNext (SearchRec) функции, как FindBackward (SearchRec)

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

Я предлагаю, чтобы поместить их в массив TSearchRec

Затем, когда вы достигнете определенного файла, получить SearchRec, что вам нужно из массива.

например, это пример, где я поместил в некоторых папок 3 текстовых файлов с именами (г, z1, и z2). затем Если я достиг «z2.txt» Я буду читать SearchRec 2 шагов назад:

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

Беглый обзор модуля IOUtils.pas. Часть 1: работа с директориями в Delphi 2010.

С выходом версии 2010 в Delphi появился ещё один модуль — IOUtils.pas облегчающий работу с файлами и директориями. Признаться я просто катострофически не люблю работу с файлами в Delphi. Незнаю почему, но всегда напрягало реализовывать поиск по маске, чтение атрибутов и т.д. и т.п. Может из-за этого и решил рассмотреть, что же такого нового и облегчающего мою жизнь приготовили разработчики из Embarcadero.

Вначале обратимся к официальной Wiki Embarcadero и посмотрим, что там пишут про IOUtils:

…IOUtils contains three static classes: TDirectory, TPath and TFile. These classes expose a number of static methods useful for I/O tasks. …

Отлично. Всего три класса, содержащие ряд классовых методов. Начнем по порядку — с TDirectory.

TSearchRec — Тип Delphi

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

    Сначала находится первый файл, удовлетворяющий заданной маске. Этот поиск осуществляется с помощью функции
    function FindFirst(const Path: String; Attr: Integer; var F: TSearchRec): Integer;

Параметр Path задаёт адрес каталога (директории), в котором производится поиск. Он должен завершаться маской имён искомых файлов, например:
‘C:\Temp\*.*’, ‘*.txt’.
Символ ‘*’ означает любое количество допустимых в имени файла символов. Если необходимо указать, что символ должен быть только один, то в маске используется символ ‘?’ . Например, маска a*.txt определяет текстовые файлы с именем любой длины начинающиеся на a , а маска a?.txt ограничивает длину имени файлов двумя символами. Если в маске описан только файл, то поиск осуществляется только в текущем каталоге.

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

  • faReadOnly = $01 — файл только для чтения;
  • faH > Наименования этих атрибутов могут иметь различные имена в различных системах. Именно текое предупреждение выдаёт Delphi при попытке использовать эти имена. Поэтому лучше использовать не наименования, а значения. Однако, тогда возникают непонятки: попробуй догадайся впоследствии, что такое $02 или $08. Поэтому нужно вводить константы с сответствующими значениями, и проблем не будет.

Эти атрибуты имеют значение отдельных битов в результирующем числе Attr. Для задания искомому файлу набора атрибутов их нужно просто просуммировать:
Attr := faReadOnly + faSysFile + faHidden;
Такой набор атрибутов заставит функцию искать только скрытые системные файлы с характеристикой «только для чтения».

Результат поиска содержится в переменной F, имеющей тип TSearchRec:
type TSearchRec = record
Time: Integer;
Size: Integer;
Attr: Integer;
Name: TFileName;
ExcludeAttr: Integer;
FindHandle: THandle;
FindData: TWin32FindData;
end;

Наиболее важными среди полей этой записи являются:

  • Name — имя файла;
  • Size — Размер файла в байтах;
  • Time — время создания файла в формате DOS.

Чтобы определить, имеет ли найденный файл нужный атрибут, используется поразрядное логическое умножение:
if (F.Attr and faDyrectory)=F.Attr
then S:=’Это каталог’;
То есть, имеющая нужный атрибут переменная F.Attr при поразрядном логическом умножении на него не изменяется.

Когда первый файл, удовлетворяющий условиям поиска, найден, вызывается функция
function FindNext(var F: TSearchRec): Integer;

Переменная F, в которой первая функция сохранила результат поиска, передаётся функции FindNext в качестве параметра. На основании записанной в неё информации будет продолжен поиск следующего подходящего файла.

Процесс поиска завершается вызовом процедуры:
procedure FindClose(var F: TSearchRec);

Эта процедура освобождает память, которая была выделена системой для проведения процесса поиска.

Функции FindFirst и FindNext возвращают значение , если при поиске не возникло ошибок и очередной файл был найден.

Для примера рассмотрим простую программку, которая поизводит поиск всех файлов на диске C. В программе папка рассматривается как файл, внутрь поиск не лезет. Можно скачать архив с этой программой.

TSearchRec — Тип Delphi

Язык:
Русский
English

Процедуры FindFirst и FindNext используют переменные типа TSearchRec для просмотра каталогов.

Type SearchRec = Record
Fill : Array [1..21] Of Byte;
Attr : Byte;
Time : Longint;
Size : Longint;
Name : Array [0..12] Of Char;
End;

Информация по каждому файлу, найденному одной из этих процедур, сохраняется обратно в переменную типа TSearchRec.

— Attr содержит атрибуты файла (состоящие из констант атрибутов файлов)
— Time содержит его дату и время (используйте UnpackTime , чтобы
распаковать запакованные данные)
— Size содержит его размер в байтах
— Name содержит его имя
— Параметр Fill зарезервирован DOS и не должен изменяться

Илон Маск рекомендует:  Примеры использования float
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL