Поиск файлов на винчестере в Delphi - Delphi, Pascal, ObjectPascal - Программирование
Навигация по сайту
Сайт:

Дополнительно:

Файловый архив:

Каталог статей:

Форум:


Категории раздела
Delphi, Pascal, ObjectPascal [18]
Программирование на Delphi, Pascal, ObjectPascal
C, C++, C# [7]
Программирование на C, C++, C#
ПХП (PHP) [6]
Все что связано с программированием на PHP.
DirectX [0]
Программирование с использованием графического API DirectX
OpenGL [0]
Программирование с использованием графического API OpenGL
Работа с базами данных (БД) [0]
Работа с базами данных MySQL и т.д. Разработка, теории, алгоритмы.
Сетевое программирование [0]
Сетевое программирование, организация сетей.
Программирование игр [0]
Все что связано с программированием игр, организацией их разработки.
Работа с мультимедиа данными [0]
Загрузка, обработка, воспроизведение и все что связано со звуком и видео.
Работа с устройсвами ввода и вывода [0]
Программирование устройств ввода и вывода. Работа с геймпадом, рулем и многим другим.
Программирование HTML 5 игр [0]
Программирование HTML 5 игр, html верстка, JS (JavaScript)
Остальное [0]
Все остальное, что не попадает ни под одну категорию.

Мини-Опрос
Какой платформой Вы пользуетесь?
Всего ответов: 1027

Партнеры сайта
....

 Главная » Статьи » Программирование » Delphi, Pascal, ObjectPascal » Поиск файлов на винчестере в Delphi

Поиск файлов на винчестере в Delphi

00:33
Хотя я и не очень хороший "Делфер", но я очень люблю программировать в Delphi, делать маленькие полезные программки для себя и своего компьютера. Недавно я узнал как производить поиск файлов на компьютере, причем поиск файлов производится не в отдельном каталоге, а на всем винчестере и в процессе поиска возможно следить за поиском. Процедуре поиска я нашел очень широкое применение, например, у меня на компьютере имеется папка с исходниками по Delphi и в этой папки очень много лишних файлов, которые занимают место на винчестере и при помощи процедуры поиска я удаляю ненужные файлы (*.cfg; *.~dfm; *.~pas и др.).

Начнем с описания процедуры FindResursive( Const path: String; Const mask: String) где переменная Path - каталог в котором будет производится поиск ('c:\'), а Mask - название файла или его часть ('*.exe' или '*.*' или 'project.dpr').

В самой процедуре будем использовать только одну (не считая вложенные функции)переменную, которая будет носить полное название найденного файла. А найденные файлы будем записывать в ListBox. Данную процедуру будем вызывать при нажатии кнопки. Процедура FindRecursive выглядит следующим образом:

Procedure FindRecursive( Const path: String; Const mask: String);

Var

fullpath: String;

Function Recurse( Var path: String; Const mask: String ): Boolean;

Var

SRec: TSearchRec;

retval: Integer;

oldlen: Integer;

Begin

Recurse := True;

oldlen := Length( path );

retval := FindFirst( path+mask, faAnyFile, SRec );

While retval = 0 Do Begin

If (SRec.Attr and (faDirectory or faVolumeID)) = 0 Then

form1.ListBox1.items.Add(path+srec.name);

retval := FindNext( SRec );

End;

FindClose( SRec );

If not Result Then Exit;

retval := FindFirst( path+'*.*', faDirectory, SRec );

While retval = 0 Do Begin

If (SRec.Attr and faDirectory) 0 Then

If (SRec.Name '.') and (SRec.Name '..') Then Begin

path := path + SRec.Name + '\';

If not Recurse( path, mask ) Then Begin

Result := False;

Break;

End;

Delete( path, oldlen+1, 255 );

End;

retval := FindNext( SRec );

End;

FindClose( SRec );

End; { Recurse }

Begin

If path = '' Then

GetDir(0, fullpath)

Else

fullpath := path;

If fullpath[Length(fullpath)] '\' Then

fullpath := fullpath + '\';

If mask = '' Then

Recurse( fullpath, '*.*' )

Else

Recurse( fullpath, mask );

End;

В целом же программа выглядит так:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

ListBox1: TListBox;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

Procedure FindRecursive( Const path: String; Const mask: String);

Var

fullpath: String;

Function Recurse( Var path: String; Const mask: String ): Boolean;

Var

SRec: TSearchRec;

retval: Integer;

oldlen: Integer;

Begin

Recurse := True;

oldlen := Length( path );

retval := FindFirst( path+mask, faAnyFile, SRec );

While retval = 0 Do Begin

If (SRec.Attr and (faDirectory or faVolumeID)) = 0 Then

form1.ListBox1.items.Add(path+srec.name); {добавление}

{очередного найденного файла в ListBox}

{-------------------------------------}

{здесь можно производить слежением за выполнение процедуры}

{например, поставить ProgressBar}

retval := FindNext( SRec );

End;

FindClose( SRec );

If not Result Then Exit;

retval := FindFirst( path+'*.*', faDirectory, SRec );

While retval = 0 Do Begin

If (SRec.Attr and faDirectory) 0 Then

If (SRec.Name '.') and (SRec.Name '..') Then Begin

path := path + SRec.Name + '\';

If not Recurse( path, mask ) Then Begin

Result := False;

Break;

End;

Delete( path, oldlen+1, 255 );

End;

retval := FindNext( SRec );

End;

FindClose( SRec );

End; { Recurse }

Begin

If path = '' Then

GetDir(0, fullpath)

Else

fullpath := path;

If fullpath[Length(fullpath)] '\' Then

fullpath := fullpath + '\';

If mask = '' Then

Recurse( fullpath, '*.*' )

Else

Recurse( fullpath, mask );

End;

procedure TForm1.Button1Click(Sender: TObject);

begin

FindRecursive('d:\','*.*'); {вместо 'd:\' можно написать лубой каталог}

end;

end.


Категория: Delphi, Pascal, ObjectPascal | Просмотров: 3895 | Добавил: ДядяВолк (11.08.2010) | Рейтинг: 0.0/0
Теги: винчестере, файлов, Поиск, Delphi, на
Источник: http://delphid.dax.ru |
HTML ссылка на материал:
BB ссылка на материал:
Похожие материалы :
Возможно вам будет интересно:
Создание заставки (Intro) (0)
Blitz 3D - полезная дипломная работа (часть 1) (0)
Урок по PaintNET (1)
Уроки по C/C++ (Части с 21 по 40) (0)
Молодому игроделу (5)
Blitz 3D - полезная дипломная работа (часть 2) (0)
Звуки и музыка (0)
Создаем танчики (Урок 2) (0)
Создание 3D игр на Game Maker (3)
Инветарь на Game Maker (0)
Моя первая страница на PHP (0)
Borland Assembler (BASM) уроки для начинающих (урок 7 часть 2) (0)
Броня для игрока (1)
Создание текстовой игры (0)
Создание базового движка для игры. Часть 1. Графика и клавиатура (0)
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Поиск по всему сайту:
Поиск по разделу:

Панель пользователя
Здравствуйте, Гость


Ник:
Пароль:
Запомнить :

Ваш IP: 216.73.216.189

Случайные конструкторы

Случайные движки

Случайные статьи

Статистика
Онлайн всего: 2
Гостей: 2
Пользователей: 0

На сайте были:

При полном или частичном копировании материалов сайта ссылка на Make-Games.ru обязательна. Make-Games.ru © 2008 - 2025 Хостинг от uCoz
Топ Разработка игр