![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Приветствую!
Помогите пожалуйста вот эту программу перевести в компонент: http://www.delphisources.ru/pages/fa...r_subdirs.html Как получить список файлов со всеми подкаталогами Код:
procedure ScanDir(StartDir: string; Mask: string; List: TStrings);
var
SearchRec: TSearchRec;
begin
if Mask = '' then
Mask := '*.*';
if StartDir[Length(StartDir)] <> '\' then
StartDir := StartDir + '\';
if FindFirst(StartDir + Mask, faAnyFile, SearchRec) = 0 then
begin
repeat Application.ProcessMessages;
if (SearchRec.Attr and faDirectory) <> faDirectory then
List.Add(StartDir + SearchRec.Name)
else if (SearchRec.Name <> '..') and (SearchRec.Name <> '.')thenbegin
List.Add(StartDir + SearchRec.Name + '\');
ScanDir(StartDir + SearchRec.Name + '\', Mask, List);
end;
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
end;Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Clear;
ScanDir('c:', '', ListBox1.Items);
Label1.Caption := IntToStr(ListBox1.Items.Count);
end;Последний раз редактировалось lmikle, 14.05.2011 в 19:17. |
|
#2
|
|||
|
|||
|
А можно узнать зачем вам именно компонент?
Реализуйте класс на основе TstringList и все. |
|
#3
|
|||
|
|||
|
Цитата:
Да в том то и дело, что нужно именно компонент, будь он неладен... Курсовик-хвост, а на носу диплом... Сам то я ДБА и юниксоид, а в дельфи мало что понимаю ![]() В ответ конечно же могу помочь чем могу. |
|
#4
|
|||
|
|||
|
Цитата:
Ну и в чем проблема? Код:
type
TSearchFiles = class(TComponent)
private
FFiles : TStringList;
FRoot : String;
FIncludeSubfolders : Boolean;
FMasks : TStringList;
public
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
procedure Execute;
property Files : TStringList read FFiles;
published
property Root : String read FRoot write FRoot;
property IncludeSubfolders : Boolean read FIncludeSubfolders write FIncludeSubfolders;
property Masks : TStingList read FMasks;
end;Ну и теперь сделать реализацию 3х методов и написать поцку регистрации компонента. |
|
#6
|
|||
|
|||
|
Цитата:
Прошу прощения за собственную тупость, а что значат эти три метода и поцка? ![]() |
|
#8
|
|||
|
|||
|
Цитата:
|
|
#9
|
|||
|
|||
|
Цитата:
Но что именно то реализовать? Несложную программу на Delphi у меня хватает понимания написать, а вот тут зашла речь о методах и каких-то поцках... Я даже и названий то таких не слышал ![]() |
|
#10
|
|||
|
|||
|
не поцках, а процках (процедурах), прочитайте про классы в Delphi и их реализацию: Методы и процедуры и т.д.
P.S.: процка регистрации это вот это: Код:
procedure Register;
....................
implementation
....................
procedure Register;
begin
RegisterComponents('Samples', [TSearch]);
// указываем какой класс в какую вкладку компонентов запихивать.
end;Последний раз редактировалось Assistant, 16.05.2011 в 16:04. |
|
#11
|
|||
|
|||
|
компонент должен быть визуальным или не визуальным? если визуальным, то породи его от ТЛистбокс и просто добавь метод Скандир. последний параметр не нужен будет.
|
|
#12
|
|||
|
|||
|
тогда уже лучше от TTreeView, красивее будет )) для большого кол-ва директорий и поддиректорий.
|
|
#13
|
|||
|
|||
|
Цитата:
Я и так то не особо, да еще и столько советов, что и не знаю за что именно теперь лучше браться... Компонент думаю что не визуальный. Просто поиск директорий и файлов по указанному пути и сохранение результата в файл. Путь поиска и имя файла сохранения просто задается в свойствах компонента. |
|
#14
|
|||
|
|||
|
Уважаемые, а не буду я сильно навязчив, если попрошу кого-нить из вас, просто дать мне рабочий код компонента... а???
Ну типа поплачусь и вы сжалитесь, только не сильно сложного... В свою очередь готов ответить на сей жест снисходительности своей благодарностью, кою определите вы ![]() |
|
#15
|
|||
|
|||
|
Код:
unit Component1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, Menus, ComCtrls, FileCtrl;
type
TComponent1 = class(TComponent)
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TComponent1]);
end;
{ WWW }
constructor Create(AOwner:TComponents);
begin
inherited Create(AOwner);
Options := Options + [ofFileMustExist, ofPathMustExist];
procedure ScanDir(StartDir: string; Mask: string; List: TStrings);
var
SearchRec: TSearchRec;
begin
if Mask = '' then
Mask := '*.*';
if StartDir[Length(StartDir)] <> '\' then
StartDir := StartDir + '\';
if FindFirst(StartDir + Mask, faAnyFile, SearchRec) = 0 then
begin
repeat Application.ProcessMessages;
if (SearchRec.Attr and faDirectory) <> faDirectory then
List.Add(StartDir + SearchRec.Name)
else if (SearchRec.Name <> '..') and (SearchRec.Name <> '.')then
begin
List.Add(StartDir + SearchRec.Name + '\');
ScanDir(StartDir + SearchRec.Name + '\', Mask, List);
end;
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Clear;
ScanDir('Z:\Downloads', '*.*', ListBox1.Items);
ListBox1.Items.SaveToFile('Z:\Dir.txt');
Close;
end;
end;
end.Последний раз редактировалось lmikle, 18.05.2011 в 21:27. |