Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
7-29117
Igor1984
2002-12-01 18:03
2003.02.10
Инициация события


1-28740
Alex G
2003-01-31 23:09
2003.02.10
Проблема сортировки... Украинские слова


7-29138
sw
2002-12-03 04:02
2003.02.10
Есть ли ф-я, к-рая преобразует код символа в скан-код клавиши?


1-28908
Alexey V
2003-01-30 16:01
2003.02.10
Мастера ! Неужели никто не поможет с OpenDialog


14-29018
Cobalt
2003-01-21 21:16
2003.02.10
Delphi<->Kylix3





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский