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

Вниз

Атрибуты   Найти похожие ветки 

 
BVV   (2005-01-20 14:22) [0]

Пытаюсь получить атрибуты файлов и папок в текстовом виде, сопоставлением:  1-faReadOnly, 2-faHidden, 4-faSysFile, 8-faVolumeID итд. Если у файла один из атрибутов то без проблем, а вот если у два, три или четыре то пулучается что то вроде 22, 33, 45, 50. При таком раскладе при сопоставлении получится более 100 вариантов. Если есть выход, подскажите. А может сушествует другая функция для получения атрибутты в текстовом виде.


 
Sandman25 ©   (2005-01-20 14:25) [1]

ReadOnly.Visible := Atrribute and faReadOnly > 0;
и т.д.


 
BVV   (2005-01-22 18:41) [2]

А по подробней, плиз


 
begin...end ©   (2005-01-22 18:47) [3]

> [2] BVV   (22.01.05 18:41)

А куда ещё подробнее? Раньше Вы как делали?


 
BVV   (2005-01-23 10:12) [4]

...
var SR:TSearchRec;
...
memo.lines.Append(IntToStr(SR.Attr);


 
BVV   (2005-01-23 10:15) [5]

...
var SR:TSearchRec;
...
memo.lines.Append(IntToStr(SR.Attr));

я просто не понимаю что за
ReadOnly.Visible := Atrribute and faReadOnly > 0;


 
VMcL ©   (2005-01-23 10:18) [6]

>>Sandman25 ©  (20.01.05 14:25) [1]

Теоретически правильно
... <> 0
поскольку Integer.


 
Anatoly Podgoretsky ©   (2005-01-23 12:18) [7]

BVV   (22.01.05 18:41) [2]
http://podgoretsky.com/cgi-bin/dlcounter/npscnt?file=http://podgoretsky.com/ftp/Docs/Delphi/Podgoretsky/bits.html&file_i d=app-bits


 
begin...end ©   (2005-01-23 12:21) [8]

> [5] BVV   (23.01.05 10:15)

Вам нужно, чтобы, например, в строке была буква "S", если файл имеет атрибут "Системный" (faSysFile), буква "R", если файл имеет атрибут "Только чтение" (faReadOnly), и т.д.?

Тогда проверяйте на каждый атрибут и прибавляйте к строке соответствующий символ в случае наличия этого атрибута, например:

function GetFileAttributesString(Attributes: Integer): String;
begin
 if Attributes and faReadOnly > 0 then Result := Result + "R";
 if Attributes and faHidden > 0 then Result := Result + "H";
 if Attributes and faSysFile > 0 then Result := Result + "S";
 if Attributes and faVolumeID > 0 then Result := Result + "V";
 if Attributes and faDirectory > 0 then Result := Result + "D";
 if Attributes and faArchive > 0 then Result := Result + "A"
end.


А можно (но не нужно) и как-нибудь извратиться, например:

function GetFileAttributesString(Attributes: Integer): String;
const
 Attr: array [1..6] of Integer =
   ((Ord("R") shl 8) or faReadOnly,
    (Ord("H") shl 8) or faHidden,
    (Ord("S") shl 8) or faSysFile,
    (Ord("V") shl 8) or faVolumeID,
    (Ord("D") shl 8) or faDirectory,
    (Ord("A") shl 8) or faArchive);
var
 I: Byte;
begin
 for I := Low(Attr) to High(Attr) do
   if Attributes and (Attr[I] and $FF) > 0 then
     Result := Result + Chr(Attr[I] shr 8)
end


:-)


 
VMcL ©   (2005-01-26 00:09) [9]

>>begin...end ©  (23.01.05 12:21) [8]

Я, конечно, понимаю, что Result в начале фукнции будет nil, но иницализировать-то надо всё-таки.

:o)


 
GuAV ©   (2005-01-26 00:18) [10]

VMcL ©   (26.01.05 0:09) [9]


> Result в начале фукнции будет nil


Ха. И думаете все поверили ?

function T: string;
begin
 Result := Result + "T";
end;

procedure TForm1.FormCreate(Sender: TObject);
var S: string; I: Integer;
begin
 for I:= 0 to 4 do
   S := T;
 Caption := S;
end;


 
VMcL ©   (2005-01-26 07:45) [11]

>>GuAV ©  (26.01.05 00:18) [10]

Тем более.
:o)



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

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

Наверх




Память: 0.49 MB
Время: 0.045 c
1-1106289423
NewDelpher
2005-01-21 09:37
2005.02.06
как найти причину AV в vcl50.bpl?


9-1098905911
_Дельфин_
2004-10-27 23:38
2005.02.06
OpenGL и 3DSMax


4-1103130861
Alex____
2004-12-15 20:14
2005.02.06
Подсчет опираций процессора


1-1106594353
serg128
2005-01-24 22:19
2005.02.06
Подскажите библиотеку для работы с GIF


4-1103363509
Начинающий2
2004-12-18 12:51
2005.02.06
Как узнать, работает программа под админом или под юзером?