Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.10;
Скачать: CL | DM;

Вниз

В чем ошибка!   Найти похожие ветки 

 
ed   (2003-01-28 21:44) [0]

Мастера, где ошибка?
Второй день мучаюсь!!!
var
Form3: TForm3;
nn:integer;
ss:string;
implementation

{$R *.dfm}

var
FileName: string; // имя или маска искомого файла
cDir: string;
n: integer; // кол-во файлов, удовлетворяющих запросу

// поиск файла в текущем каталоге
procedure Find;
var
SearchRec: TSearchRec; // информация о файде или каталоге
begin
GetDir(0,cDir); // получить имя текущего каталога
if cDir[length(cDir)] <> "\" then cDir := cDir+"\";

if FindFirst(FileName, faArchive,SearchRec) = 0 then
repeat
if (SearchRec.Attr and faAnyFile) = SearchRec.Attr then
begin


Form3.FileListBox1.Items.Add(cdir+"\"+ SearchRec.Name);
n := n + 1;
end;

until FindNext(SearchRec) <> 0;
// обработка подкаталогов текущего каталога
if FindFirst("*", faDirectory, SearchRec) = 0 then
repeat
if (SearchRec.Attr and faDirectory) = SearchRec.Attr then
begin

if SearchRec.Name[1] <> "." then
begin
ChDir(SearchRec.Name);// войти в каталог
Find; // выполнить поиск в подкаталоге
ChDir("..");// выйти из каталога
end;
end;
until FindNext(SearchRec) <> 0;
end;


function GetPath(mes: string):string;
var
Root: string; // корневой каталог
pwRoot : PWideChar;
Dir: string;
begin
Root := "";
GetMem(pwRoot, (Length(Root)+1) * 2);
pwRoot := StringToWideChar(Root,pwRoot,MAX_PATH*2);
if SelectDirectory(mes, pwRoot, Dir)
then
if length(Dir) = 2
then GetPath := Dir+"\"
else GetPath := Dir
else
GetPath := "";
end;

//Поиск
procedure TForm3.Button1Click(Sender: TObject);
begin
//поиск


FileListBox1.Clear;
Label1.Caption := "";
FileName := "*.jpg"; // что искать

//-------------------
cDir :="C:\";

(если: D:\ или E:\ то всё нормально, а с C:\ выдаёт ошибку. //------------------

n:=0; // кол-во найденных файлов
ChDir(cDir); // войти в каталог начала поиска
Find; // начать поиск
if n = 0 then
ShowMessage("Файлов не найдено.")
else Label1.Caption := "Найдено файлов:" + IntToStr(n);
end;


 
Anatoly Podgoretsky ©   (2003-01-28 21:59) [1]

У тебя неверная работа с аттрибутами, результат ты можешь получить только в редких случаях. Что то этот код мне напоминает, где то в каких то примерах я его видел.

Не понятно, что ты здесь хочешь получить
if FindFirst(FileName, faArchive,SearchRec) = 0 then
repeat
if (SearchRec.Attr and faAnyFile) = SearchRec.Attr then

и вот здесь
if FindFirst("*", faDirectory, SearchRec) = 0 then
repeat
if (SearchRec.Attr and faDirectory) = SearchRec.Attr then


Возьми лучше пример из местного чаво и попробуй понять работу с аттрибутами и логические операции, в особенности and


 
ed   (2003-01-28 23:22) [2]

Anatoly Podgoretsky , где конкретно взять пример?


 
Cobalt ©   (2003-01-28 23:52) [3]

Это он намекает на http://delphi.mastak.ru/faq.shtml


 
ed   (2003-01-29 00:21) [4]

Да не нашёл я в faq ничего...
Как тогда по другому наити все файлы по маске:*.jpg; на C:\
Включая подкаталоги?


 
Palladin ©   (2003-01-29 03:04) [5]

вот еще более конкретная ссылка для тех кто не умеет искать...
http://delphi.mastak.com/cgi-bin/faq.pl?look=1&id=1015254946&n=19

вызов описаной процедуры:
var
lResultStrings:TStringList;
....
ScanDir("C:","*.jpg",lResultStrings);


помоему все разжевано и слегка переварено... :)


 
ed   (2003-01-30 01:34) [6]

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;
if Mask="" then mask:="*.jpg"; ничего не находит!!!


 
А   (2003-01-30 04:59) [7]

StartDir какой ставишь?


 
Anatoly Podgoretsky ©   (2003-01-30 09:31) [8]

Ну наверно у тебя в каталоге нет ни одного файла *.jpg



Страницы: 1 вся ветка

Текущий архив: 2003.02.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
6-28980
Gamar
2002-12-16 09:31
2003.02.10
TNMHTTP и прочее


8-28948
DDS
2002-10-28 10:52
2003.02.10
Полупрозрачность?


7-29141
DenK_vrtz
2002-12-04 10:02
2003.02.10
Вопрос про системные ресурсы!


3-28600
FAS
2003-01-18 01:12
2003.02.10
откуда и как инсталировать BDE


9-28567
Gayrus
2002-08-31 14:24
2003.02.10
OpenGL