|
|
Регистрация | << Правила форума >> | 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х методов и написать поцку регистрации компонента. |
#5
|
|||
|
|||
взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя Последний раз редактировалось Assistant, 16.05.2011 в 11:09. |
#6
|
|||
|
|||
Цитата:
Прошу прощения за собственную тупость, а что значат эти три метода и поцка? |
#8
|
|||
|
|||
Цитата:
|
#9
|
|||
|
|||
Цитата:
Но что именно то реализовать? Несложную программу на Delphi у меня хватает понимания написать, а вот тут зашла речь о методах и каких-то поцках... Я даже и названий то таких не слышал |
#10
|
|||
|
|||
не поцках, а процках (процедурах), прочитайте про классы в Delphi и их реализацию: Методы и процедуры и т.д.
P.S.: процка регистрации это вот это: Код:
procedure Register; .................... implementation .................... procedure Register; begin RegisterComponents('Samples', [TSearch]); // указываем какой класс в какую вкладку компонентов запихивать. end; взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя Последний раз редактировалось Assistant, 16.05.2011 в 16:04. |
#11
|
|||
|
|||
компонент должен быть визуальным или не визуальным? если визуальным, то породи его от ТЛистбокс и просто добавь метод Скандир. последний параметр не нужен будет.
|
#12
|
|||
|
|||
тогда уже лучше от TTreeView, красивее будет )) для большого кол-ва директорий и поддиректорий.
взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#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. |