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

Вниз

Поиск файла в NTFS   Найти похожие ветки 

 
Lampochka ©   (2008-02-14 03:51) [0]

Доброго здравия господа!!!

Прошу Вас помочь мне решить задачу с поиском любого файла в NTFS.
Я написал программку, которая выводит список всех файлов в таблицу. В FAT32 работает замечательно, в NTFS - отказывается.

var
 FileName: String;
 cDir: String;
 n: Longint;
 Fil: OleVariant;

procedure TGlav_Form.Prorisovka;
begin
 Glav_Form.ElLabel1.Top := 5;
 Glav_Form.ElLabel1.Visible := true;
 Glav_Form.ElLabel2.Top := 5;
 Glav_Form.ElLabel2.Visible := true;
 Glav_Form.ElPopupButton1.Visible := true;
 Glav_Form.ElPopupButton2.Visible := true;
end;

procedure Find;
var
 SearchRec: TSearchRec;
 Date: TDateTime;
begin
 GetDir (0, cDir);
 if cDir [length(cDir)] <> "\" then cDir := cDir + "\";
 FileName := "*.*";
 if FindFirst (FileName, faAnyFile, SearchRec) = 0 then
   repeat
     Application.ProcessMessages;
     try
       Glav_Form.ElBiProgressBar1.DarkValue := n;
       if (SearchRec.Attr and faAnyFile) = SearchRec.Attr then
         begin
           Glav_Form.Update;
           Glav_Form.ElTreeStringGrid1.RowCount := n;
           cDir := GetCurrentDir;
           if cDir [length(cDir)] <> "\" then cDir := cDir + "\";
           Glav_Form.ElTreeStringGrid1.Cells [0, n] := IntToStr (n);
           Date := FileDateToDateTime (SearchRec.Time);
           Glav_Form.ElTreeStringGrid1.Cells [1, n] := DateToStr (Date);
           Glav_Form.ElTreeStringGrid1.Cells [2, n] := SearchRec.Name;
           Glav_Form.ElTreeStringGrid1.Cells [4, n] := cDir;
           n := n + 1;
         end;
       except

       end;
     until FindNext (SearchRec) <> 0;

 if FindFirst ("*", faAnyFile, SearchRec) = 0 then
   repeat
     if (SearchRec.Attr and faDirectory) = faDirectory
       then
         if SearchRec.Name [1] <> "." then
           begin
             chDir (SearchRec.Name);
             Find;
             ChDir ("..");
           end;
   until FindNext (SearchRec) <> 0;
end;

procedure TGlav_Form.FormActivate(Sender: TObject);
begin
 prorisovka;
end;

procedure TGlav_Form.ElPopupButton1Click(Sender: TObject);
begin
 if Glav_Form.ElFolderDialog1.Execute then
   begin
     Glav_Form.ElLabel2.Caption := "идет работа...";
     Glav_Form.ElBiProgressBar1.Visible := true;
     Glav_Form.Update;
     cDir := Glav_Form.ElFolderDialog1.Folder;
     n := 0;
     ChDir (cDir);
     Find;
     if n = 0 then ShowMessage ("Файлов, удовлетворяющих критерию поиска нет")
       else ShowMessage ("Файлы включены в таблицу");
   end;
   Glav_Form.ElLabel2.Caption := "ожидание";
   Glav_Form.ElBiProgressBar1.Visible := false;
   Glav_Form.ElTreeStringGrid1.UseDefaultEditor := true;
end;

procedure TGlav_Form.FormCanResize(Sender: TObject; var NewWidth,
 NewHeight: Integer; var Resize: Boolean);
begin
 prorisovka;
end;

procedure TGlav_Form.ElPopupButton2Click(Sender: TObject);
var
 Fil: OleVariant;
begin
 Glav_Form.WordApplication1.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);
 Glav_Form.WordDocument1.ConnectTo(Glav_Form.WordApplication1.ActiveDocument);
 for n := 0 to Glav_Form.ElTreeStringGrid1.RowCount do
   begin
     Glav_Form.WordApplication1.Selection.TypeText (Glav_Form.ElTreeStringGrid1.Rows [n].Text);
   end;
 Glav_Form.WordApplication1.Visible := true;
end;

procedure TGlav_Form.FormCloseQuery(Sender: TObject;
 var CanClose: Boolean);
begin
 try
   Glav_Form.WordApplication1.Quit;
 except

 end;
end;

procedure TGlav_Form.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Application.Terminate;
end;

end.


 
Сергей М. ©   (2008-02-14 09:09) [1]


> в NTFS - отказывается


Что, прямо вот так и говорит - "работать отказываюсь" ?)


 
Slym ©   (2008-02-14 09:48) [2]

1. Ниодного FindClose я не нашел, а это плохо :)
2. Смена текущего каталога зачем? Без него никак?
procedure Find(Path:string);
var
 SearchRec: TSearchRec;
 n:integer;
begin
 Path:=IncludeTrailingPathDelimiter(Path);

 if FindFirst (Path+"*", faAnyFile, SearchRec) = 0 then
 repeat
   if (SearchRec.Attr and faDirectory) = 0 then
   begin
     Glav_Form.Update;
     Glav_Form.ElTreeStringGrid1.RowCount:=Glav_Form.ElTreeStringGrid1.RowCount+1;
     n:=Glav_Form.ElTreeStringGrid1.RowCount;
     Glav_Form.ElBiProgressBar1.DarkValue:=n;
     Glav_Form.ElTreeStringGrid1.Cells [0, n] := IntToStr (n);
     Glav_Form.ElTreeStringGrid1.Cells [1, n] := DateToStr (FileDateToDateTime (SearchRec.Time));
     Glav_Form.ElTreeStringGrid1.Cells [2, n] := SearchRec.Name;
     Glav_Form.ElTreeStringGrid1.Cells [4, n] := Path;
   end;
 until FindNext (SearchRec) <> 0;
 FindClose(SearchRec);

 if FindFirst(Path+"*", faDirectory, SearchRec) = 0 then
 repeat
   if SearchRec.Name[1]<>"." then
     Find(Path+SearchRec.Name);
 until FindNext (SearchRec) <> 0;
 FindClose(SearchRec);
end;

Find(Glav_Form.ElFolderDialog1.Folder);


 
Плохиш ©   (2008-02-14 10:35) [3]


> Lampochka ©   (14.02.08 03:51)  

Я не понял, это мы должны отладить твой код?


 
Игорь Шевченко ©   (2008-02-14 12:51) [4]

Хинт: У файлов в NTFS имеются дополнительные атрибуты.

Смотри код сравнения атрибутов. Желательно в отладчике.

if (SearchRec.Attr and faAnyFile) = SearchRec.Attr then

(наверное) менять на  if (SearchRec.Attr and faAnyFile) = faAnyFile then


 
Anatoly Podgoretsky ©   (2008-02-14 14:03) [5]

> Игорь Шевченко  (14.02.2008 12:51:04)  [4]

Так тоже правильно, только не у партизан.


 
Lampochka ©   (2008-02-14 22:31) [6]

Сергею М.

Нет она не так говорит, как можно видеть в моем коде - "Файлов, удовлетворяющих критерию поиска нет"

Плохишу.

Мне казалось, что форум для того и существует, чтобы профи помогали новичкам, а не издевались!!!

Все равно спасибо, господа профи!!!


 
ketmar ©   (2008-02-14 22:35) [7]

>[6] Lampochka © (2008-02-14 22:31:00)
>Мне казалось, что форум для того и существует, чтобы профи помогали
>новичкам, а не издевались!!!

помогали учиться, а не «писали код». за «писали код» уже оплата идёт.

---
Understanding is not required. Only obedience.


 
Плохиш ©   (2008-02-14 22:53) [8]


> Lampochka ©   (14.02.08 22:31) [6]


> Мне казалось, что форум для того и существует, чтобы профи
> помогали новичкам, а не издевались!!!

Новичкам здесь помогают, а бездельником и дармоедам - нет. А ты относишься ко вторым, во-первых, т.к. не потрудился запустить отладчик, во-вторых, не описал проблему и в-третих, вывалил сюда кучу букаф, типа разбирайтесь.


 
Lampochka ©   (2008-02-14 23:16) [9]

Удалено модератором


 
Riply ©   (2008-02-15 02:42) [10]

> [9] Lampochka ©   (14.02.08 23:16)
> ОГРОМНОЕ спасибо, все получилось!!!

"все получилось" - это как понимать надо ?
В смысле чужой код работает ? Так в этом никто и не сомневался.

А может "все получилось" должно означать, что разобрался и понял,
в чем была ошибка, чтобы в похожей ситуации ее не повторять,
что пришло озарение, почему "отсутствие FindClose это плохо" ?

Или в похожей ситуации снова на форум за решением ?


 
Германн ©   (2008-02-15 02:53) [11]


> ли в похожей ситуации снова на форум за решением ?
>

Угу. Снова.
"И вечный бой. Покой нам только снится!"
:)
А вот на королевстве нет конференции для "начинающих". Что бы это значило?


 
Саша   (2008-02-15 23:40) [12]

Злые вы.

Lampochka, глянь суда, должно помочь
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=49572



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

Форум: "Начинающим";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.006 c
2-1203417480
Stunt
2008-02-19 13:38
2008.03.16
Передача PDouble в dll, компилированную в Билдере


15-1202171549
oldman
2008-02-05 03:32
2008.03.16
Что за защита такая?


15-1202376215
ANB
2008-02-07 12:23
2008.03.16
"Народные ИПО" - кидалово ?


2-1203347003
savyhinst
2008-02-18 18:03
2008.03.16
CGI


15-1202479970
ketmar
2008-02-08 17:12
2008.03.16
чудные каменты…





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