Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.31;
Скачать: CL | DM;

Вниз

странный обход каталогов   Найти похожие ветки 

 
Bosh ©   (2003-07-16 02:29) [0]

Доброе время суток !

Отлаживая программу столкнулся с интересным поведение ф-ий FindFileFirst и FindFileNext. При указании начального пути - локального (винчестера), можно отличить каталоги от файлов
...
FindData.dwFileAttributes<>FILE_ATTRIBUTE_DIRECTORY
...
НО при указании какогонибуть сетевого пути, отличить по этому условию , каталоги от файлов не получается!

В чем проблемма !? Что я делаю не так??


 
Rouse_ ©   (2003-07-16 02:56) [1]

Ошибка в 17 строке

Желаю успехов


 
Theoden   (2003-07-16 02:57) [2]

Я делаю немного подругому см. код


 
Theoden   (2003-07-16 02:58) [3]

if FindFirst(maildir00dop + mailaddr[j][0], FileAttrs, SFile) = 0 then
begin
repeat
if SFile.Attr = faDirectory then continue;
Form1.IdMsg.From.Text := "Office";
Form1.IdMsg.Recipients.EMailAddresses := mailaddr[j][1];
Form1.IdMsg.Subject := SFile.Name;
TIdAttachment.Create(Form1.IdMsg.MessageParts, maildir00dop + SFile.Name);
Form1.IdSMTP.Send(Form1.IdMsg);
Form1.IdMsg.Clear;
DeleteFile(maildir00dop + SFile.Name);
until FindNext(SFile) <> 0;
FindClose(SFile);
end;

работа идет с сетевым диском


 
Bosh ©   (2003-07-16 03:14) [4]

У меня не работает FindNext и FindFirst
faDirectory имеет код 48h, а при откладки аттрибут каталога был равен 30h.
FindFileFirst сразу отличил каталоги от файлов.
Сейчас попробую так сделать . Но наскольно помню у меня так не работало. :-(


 
Rouse_ ©   (2003-07-16 03:21) [5]

Да нибоже ж ты мой, дайте Ваш код

Желаю успехов


 
Bosh ©   (2003-07-16 03:29) [6]

упс)))
вот он

procedure CreateTree(StartDir_,Mask_:string;FlagTree:boolean);
var
FindData:_WIN32_FIND_DATA;
Result_:LongBool;
FindHandle:cardinal;
ext:string;
begin
FindHandle:=FindFirstFile(PAnsiChar(StartDir_+"\*.*"),FindData);
Result_:=true;
while (result_<>false) and (FindHandle<>INVALID_HANDLE_VALUE) do
begin
if (StrPas(FindData.cFileName)<>".") and
(StrPas(FindData.cFileName)<>"..") and
(FindData.dwFileAttributes<>FILE_ATTRIBUTE_DIRECTORY) then
begin
Ext:=ExtractFileExt(UpperCase(StrPas(FindData.cFileName)));
Delete(Ext,1,1);
if ext=(UpperCase(mask_)) then
begin
FileCopyList.Add(StartDir_+"\"+StrPas(FindData.cFileName));
end;
end;
if (StrPas(FindData.cFileName)<>".") and
(StrPas(FindData.cFileName)<>"..") and
(FindData.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY) then
begin //--- вот эту локально все работает , при сети не работает
if FlagTree then
CreateTree(StartDir_+"\"+StrPas(FindData.cFileName),Mask_,FlagTree);
end;
Result_:=FindNextFile(FindHandle,FindData);
end;
end;


 
Rouse_ ©   (2003-07-16 03:57) [7]

попробуй вот так отладить

begin
FindHandle:=FindFirstFile(PAnsiChar(StartDir_+"\*.*"),FindData);
Result_:=true;
while (result_<>false) and (FindHandle<>INVALID_HANDLE_VALUE) do

Желаю успехов


 
Rouse_ ©   (2003-07-16 03:58) [8]

ой Сори чуть выше вырезал код
Вот так смри

while (result_<>false) and (FindHandle<>INVALID_HANDLE_VALUE) do
begin
f.Lines.Add(StartDir_+"\"+StrPas(FindData.cFileName));

Там все виднее будет

Желаю успехов


 
ЮЮ ©   (2003-07-16 05:26) [9]

Наверное, некорректно использовать прямое сравнение атрибутов
FindData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY,
т.к. возможно наличие не одного, а нескольких сразу,
правильней будет
FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = FILE_ATTRIBUTE_DIRECTORY,




 
Anatoly Podgoretsky ©   (2003-07-16 08:01) [10]

А чего удивляться, прямое сравнение аттрибутов, вместо сравнения флагов. Пример от Theoden (16.07.03 02:58) грешит тем же абсурдом.

if (sr.Attr and faDirectory) = faDirectory then else


 
Bosh ©   (2003-07-17 04:23) [11]

да именно в прямом сравнении аттрибутов ошибка была
Все БОЛЬШОЕ СПАСИБО!!



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

Текущий архив: 2003.07.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
1-100767
td
2003-07-16 18:37
2003.07.31
PostMessage


3-100623
dumm
2003-07-08 12:48
2003.07.31
remote server ib6


1-100715
aga
2003-07-18 17:05
2003.07.31
TreeView


3-100621
Serge2002
2003-07-10 09:10
2003.07.31
Cannot transliterate character beetwen charcter set!


6-100866
dzmitry_
2003-04-20 12:57
2003.07.31
GetHideShare