АФ
Алексей Федосов

Программисты DELPHI помогите с заданием? никак не могу ...

задача такая . организовать рекурсивный поиск на диске 'D' . искать файл text.txt . и если файл найден - показать его в listbox1 . затем прочитать его содержимое, скопировать в переменную и сохранить в другой созданный новый файл .

без поиска всё работает . Не работает только сам поиск . Укажите на ошибки, 2 недели мучаюсь ...

вот сам код

procedure TForm1.ScanDirectory(Path:string; mask:string);

var

sr:tsearchrec;

find1:integer;

begin

if mask='' then

mask:=mask+'*.*';

if Path='' then

Path:=Path+'D:\';

find1:=findfirst(Path+ mask,faanyfile,sr);

while find1=0 do

begin

if (sr.attr and fadirectory)=fadirectory then

if (sr.name='.') or (sr.name='..') then

begin

if (sr.name='text.txt') then

listbox1.items.add(sr.name)

else

find1:=findnext(sr);

continue;

end;

if (sr.Attr and fadirectory)=fadirectory then

begin

ScanDirectory(Path+ sr.name, mask);

if (sr.name='text.txt') then

listbox1.Items.add(sr.Name) else

find1:=findnext(sr);

continue;

end;

find1:=findnext(sr);

continue;

end;

findclose(sr);

end;

procedure TForm1.Button1Click(Sender: TObject);

var

txt:textfile;

txt0:textfile;

s:string;

begin

ScanDirectory('D:\', '');

if fileexists('text.txt') then

assignfile(txt, 'text.txt');

assignfile(txt0, 'text1.txt');

rewrite(txt0);

reset(txt);

while not eof(txt) do

begin

readln(txt, s);

writeln(txt0, s);

end;

closefile(txt0);

closefile(txt);

end;

end.

Da
Daimond

Честно сказать, странноватая у Вас получилась процедурка. Я бы поиск вот так сделал:

procedure TfMain.SearchFile(Dir, FileName : string);
var
SearchResult : TSearchRec;
begin
if FindFirst(Dir + FileName, faAnyFile, SearchResult) = 0 then
repeat
if (SearchResult.Attr and faDirectory) <> faDirectory then
lbFiles.Items.Add(Dir + SearchResult.Name)
until
FindNext(SearchResult) <> 0;
FindClose(SearchResult);

if FindFirst(Dir + '*', faAnyFile, SearchResult) = 0 then
repeat
if (SearchResult.Attr and faDirectory) = faDirectory then
if ((SearchResult.Name <> '..') and (SearchResult.Name <> '.')) then
SearchFile(Dir + SearchResult.Name + '\', FileName);
until FindNext(SearchResult) <> 0;
FindClose(SearchResult);
end {SearchFile};

Может не совсем элегантно, но работает корректно. Вот тут (rghost . ru/52346055) простенький рабочий проект поиска, если потребуется. Осталось только в отдельный поток вынести поиск и будет отлично.

Похожие вопросы
Вопрос к программистам Delphi
Программисты помогите по delphi 7
Delphi программисты помогите, пожалуйста=>
помогите программисты!) delphi 7 оч нужно
кто хороший программист помогите плизз! (( Delphi 7
Программисты помогите Delphi 7
Есть ли программисты не знающие Pascal или Delphi и можно ли их назвать программистами
Программистам на Delphi
Помогите delphi-программисты.
Не могу через delphi 7 решить задание.