Форум: "Основная";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
ВнизАтрибуты Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.035 c