Главная страница
    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.47 MB
Время: 0.01 c
3-28648
Mihas
2003-01-22 14:38
2003.02.10
Как сохранить поток в Blob поле InterBase6


3-28617
Jaxtor
2003-01-23 11:37
2003.02.10
Доступ к значениям записи в DBGrid е после DBGrid.OnCellClick


14-29075
Supreme
2003-01-24 00:00
2003.02.10
Институт Искусственного Интеллекта


14-29064
Ru
2003-01-24 16:56
2003.02.10
Вера в компьютер или современный фетишизм


1-28745
D}|{0KEP
2003-02-01 05:23
2003.02.10
Помогите сделать !!!!!!!!!!!!!!!!!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский