Текущий архив: 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.46 MB
Время: 0.01 c