- •1.Рекурсивные алгоритмы
- •2.Алгоритмы поиска и сортировки.
- •Квадратичные и субквадратичные алгоритмы
- •Сравнение времени сортировок
- •Логарифмические и линейные алгоритмы
- •Простой выбор
- •Простой обмен
- •Простые вставки
- •3.Запись в файл текстовой информации
- •4.Поиск созданных файлов
- •5.Чтение из текстового файла
3.Запись в файл текстовой информации
Memo1.Lines.SaveToFile(Имя_файла); // сохранение
или
Рассмотрим пример:
procedure TForm1.Button1Click(Sender: TObject);
Var f:TextFile; // указатель на текстовый файл
begin
AssignFile(f,'c:\1.txt'); // привязка названия к переменной
{$I-}
Append(f); // открыть файл для добавления
if IOResult<>0 then // если ошибка открытия (напр. файла нет)
begin
{$I-}
Rewrite(f); // создать новый файл
{$I+}
if IOResult<>0 then // ошибка создания файла
begin
ShowMessage('Ошибка создания файла C:\1.TXT');
Exit;
end;
end;
WriteLn(f,'Привет'); // запись в файл строки с символами перевода строки
CloseFile(f); // закрыть файл
end;
Процедура Append(Файл) открывает файл для записи и устанавливает указатель записи в конец файла, т.е. все добавляемые к файлу строки будут записаны в конец файла.
В нашем случае в самом начале файла 1.txt может не оказаться на диске, поэтому команда открытия файла для добавления вызовет ошибку. В этом случае срабатывает наш собственный контроль ошибок и выполняется команда создания файла.
4.Поиск созданных файлов
Поиск файлов в 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 - файл только для чтения;
-
faHidden = $02 - скрытый файл;
-
faSysFile = $04 - системный файл;
-
faVolumeID = $08 - метка диска;
-
faDirectory = $10 - каталог (директория);
-
faArchive = $20 - архивный файл;
-
faAnyFile = $3F - произвольный файл.
Эти атрибуты имеют значение отдельных битов в результирующем числе 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 возвращают значение 0, если при поиске не возникло ошибок и очередной файл был найден.