Poslao: 17 Jun 2010 22:59
|
offline
- Petar
- Građanin
- Pridružio: 26 Feb 2004
- Poruke: 55
- Gde živiš: Banja Luka
|
Posto mi je potrebno da program razlikuje folder od fajla, primjetio sam
da neke foldere program propusta prepoznati zbog njihovih atributa(i faHidden i faReadOnly i fafa...), pa sam dodao jos kombinacija istih:
if Sr.Attr in [16, 17, 18, 19, 20, 21, 22, 23] then
JeFolder.
Pitanje je(posto to neko vjerovatno vec zna, a da ne bih previse dugo experimentisao) da nema neki visak u prethodno navedenim atributima,npr. 20 tj. faDirectory i faSysFile ili neki manjak kombinacija?
I kako to da sam pretrazujuci svoj C:\ dobio nebulozne atribute fajlova
npr. 8224 -> C:\WINDOWS\system32\wbem\Repository\FS\INDEX.BTR,
koji se ne mogu dobiti nikakvom kombinacijom atributa iz TSearchRec-a?
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 17 Jun 2010 23:22
|
offline
- bobby
- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
Koji Delphi?
D7 nema definisan faNormal ($00000080)
|
|
|
|
Poslao: 18 Jun 2010 13:04
|
offline
- Petar
- Građanin
- Pridružio: 26 Feb 2004
- Poruke: 55
- Gde živiš: Banja Luka
|
Napisano: 18 Jun 2010 9:38
Instaliran mi je D7 i BDS2006 i kod njih ne postoji faNormal. I da npr. ima
kako bi mi pomogao u razlikovanju foldera i fajla?
Dopuna: 18 Jun 2010 13:04
r 1 + 16 = 17
h 2 + 16 = 18
rh 1 + 2 + 16 = 19
s 4 + 16 = 20
rs 1 + 4 + 16 = 21
hs 2 + 4 + 16 = 22
rhs 1 + 2 + 4 + 16 = 23
a 32 + 16 = 48
ra 1 + 32 + 16 = 49
ha 2 + 32 + 16 = 50
rha 1 + 2 + 32 + 16 = 51
sa 4 + 32 + 16 = 52
rsa 1 + 4 + 32 + 16 = 53
hsa 2 + 4 + 32 + 16 = 54
rhsa 1 + 2 + 4 + 32 + 16 = 55
r h s a
1 2 4 32
evo mogucih kombinacija za foldere.
znaci ispravan kod za razlikovanje foldera i fajla je ovo
if Sr.Attr in [16, 17, 18, 19, 20, 21, 22, 23, 48, 49, 50, 51, 52, 54, 53, 55] then
valjda.
|
|
|
|
Poslao: 18 Jun 2010 18:41
|
offline
- bobby
- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
Iskreno, ne razumem sto radis ovako komplikovano.
Zar nije dovoljno da proveris da li imas faDirectory medju atributima?
Recimo,
if sr.attr and faDirectory <> 0 then ...
|
|
|
|
Poslao: 18 Jun 2010 20:19
|
offline
- Petar
- Građanin
- Pridružio: 26 Feb 2004
- Poruke: 55
- Gde živiš: Banja Luka
|
Da, da, to je onaj potpuno ispravan kod, a ne ovo moje, u stvari to sam i pitao i dobio odgovor. Iako je pocetni kod krenuo od slicnog "(Sr.Attr and faDirectory) = faDirectory" vremenom se izvitoperio i dosao na ovaj komplikovani(bespotrebni).
Hvala.
Pitanje za fajlove ostaje kako je moguce dobiti atribut iz gore navedenog fajla i npr. 8208 -> C:\WINDOWS\Prefetch?
|
|
|
|
Poslao: 18 Jun 2010 20:29
|
offline
- bobby
- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
Evo pogledaj funkciju koju ja koristim u jednom od programa:
function GetAttributes(f: WideString): string;
var
attrs: Integer;
begin
attrs := WideFileGetAttr(f);
Result := '';
if attrs and faDirectory > 0 then
Result := Result + 'd'
else
Result := Result + '-';
if attrs and faReadOnly > 0 then
Result := Result + 'r'
else
Result := Result + '-';
if attrs and faArchive > 0 then
Result := Result + 'a'
else
Result := Result + '-';
if attrs and faHidden > 0 then
Result := Result + 'h'
else
Result := Result + '-';
if attrs and faSysFile > 0 then
Result := Result + 's'
else
Result := Result + '-';
end;
Ovo daje listu atributa kao u recimo Total Commanderu (na primer: r-hs).
Znaci, nema druge osim da proveris prisustvo svakog atributa posebno.
Osim gore spomenutih, na NTFS fajl sistemima imas jos par atributa, tipa Volume itd.
Mozes i njih da ubacis u funkciju.
|
|
|
|