FindFirst - kyde byrkam ?

3 отговора 122 прегледа
#1

FindFirst - kyde byrkam ?

LocalPath :...
FileAttrs := faAnyFile;
if FindFirst(LocalPath + '\*.*', FileAttrs, sr) = 0 then

begin
repeat
if (sr.Attr and FileAttrs) = sr.Attr then // bi tryabvalo tova vinagi da e TRUE, no ne vinagi e.. zashto ? Kyde byrkam ?
Mersi predvaritelno...

Отговор
в отговор на Sa #2

Re: FindFirst - kyde byrkam ?

Почти дословно си повторил примера в Help-а на Delphi5...

Предположение:
Аргумента за атрибут е малко двузначен; ако зададеш два флага, това какво означава - че искаш файловете, които имат и двата флага или тези, които имат който и да е от тези флагове?
В случая Delphi-то (т.е. Windows-а) работи по втората схема; така получаваш файлове с установен който и да е от исканите атрибути, а ако искаш само тези, които имат установени и двата, ги филтрираш по посочения от теб начин.

Отговор
в отговор на Sa #3

Знам ли?

Нещо не схванах... Преписах същия пример за FindFirst със един ListBox L и един бутон B. При натискане на бутона файловете и директориите от 'C:\*.*' се нахакват в L - независимо с какви атрибути са.
procedure TForm1.Button1Click(Sender: TObject);
var sr: TSearchRec;
FileAttrs: Integer;
begin
FileAttrs := faAnyFile;
if FindFirst('c:\*.*', FileAttrs, sr) = 0 then
begin
if (sr.Attr and FileAttrs) = sr.Attr then L.Items.Add (sr.Name);
while FindNext(sr) = 0 do if (sr.Attr and FileAttrs) = sr.Attr then L.Items.Add (sr.Name);
FindClose(sr);
end;
end;
При тебе какви файлове не се прочитат?

чети и дишай по-леко
Отговор
в отговор на Pechenia #4

Re: Знам ли?

Obhogdam vsichki failove na c:\ (vkluchitelno i poddirektoriite) i sumata na razmera na failovete se razlichavashe ot tazi, koyato pokazva win-a (vseki pyt pokazva edno i systo chislo), kogato ya izpylnih postypkovo ne vyrhu celiya diska, a vyrhu direktoria na adobe (kydeto pak imashe razminavane, nyakoi direktorii obache si byaha nared) propuskashe faila WHAppList.xml ot direktoria C:\Documents and Settings\Administrator\Application Data\Adobe\Acrobat\Whapi.... Kato mahnah proverkata i vsichko si stana nared.... (ne sym tyrsil koi drugi failove propuska) strannoto e, che kogato tyrsya za fail, ko tyrsya kato anyfail i posle pri proverkata bi tryabvalo vinagi da e true...

Отговор