Форум: "Начинающим";
Текущий архив: 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