Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизКак лучше оформить строку аттрибутов? Найти похожие ветки
← →
М (2012-06-02 02:38) [0]Функция возвращает строку с атрибутами.
function GetAttributes(Value: LongInt): string;
begin
Result:= "";
If ((Value and faReadOnly) = faReadOnly) then Result:= Result + "Только для чтения,";
If ((Value and faHidden) = faHidden) then Result:= Result + "Скрытый,";
If ((Value and faSysFile) = faSysFile) then Result:= Result + "Системыный файл,";
If ((Value and faVolumeID) = faVolumeID) then Result:= Result + "Метка диска,";
If ((Value and faDirectory) = faDirectory) then Result:= Result + "Директория,";
If ((Value and faArchive) = faArchive) then Result:= Result + "Файл,";
If ((Value and faSymLink) = faSymLink) then Result:= Result + "Символическая ссылка,";
If ((Value and faAnyFile) = faAnyFile) then Result:= Result + "Обычный файл";
If (Result[Length(Result)] = ",")
then Result[Length(Result)]:= " ";
end;
Как видите в каждой строке прописывается запятая.
Лишняя затирается.
Как лучше сделать сабж?
← →
icelex © (2012-06-02 03:12) [1]Ну, например, динамический массив/список строк, который набивается атрибутами, а затем соединяем массив в одну строку.
Только чем это лучше?
← →
Юрий Зотов © (2012-06-02 08:02) [2]> Как лучше сделать сабж?
Как угодно, как удобнее, как проще, как нравится и т. д. Но что в этом списке делает faAnyFile?
Посмотрите значения атрибутов и Вы увидите, что
faAnyFile =
faReadOnly or faHidden or faSysFile or faVolumeID or faDirectory or faArchive
Значит, строку "Обычный файл" Ваш код выдаст только вместе с шестью другим строками. Какой тогда в ней смысл?
← →
М (2012-06-02 10:45) [3]
> Юрий Зотов © (02.06.12 08:02) [2]
Просто в справке отчего-то faArchive - Not used, поэтому так и подумал.
faArchive 32 Archive files Not used.
faSymLink 64 Symbolic link File is a symbolic link.
faAnyFile 71 Any file Any file.
Плюс faAnyFile определен простым числом:
faAnyFile = $0000003F;
← →
Омлет © (2012-06-02 11:01) [4]GetAttributes(0) -> AV.
← →
Омлет © (2012-06-02 11:16) [5]
function GetAttributes(Value: LongInt): string;
const
FILE_ATTRIBUTES: array[0..7] of record flag: cardinal; name: string end =
((flag: faReadOnly; name: "Только для чтения"),
(flag: faHidden; name: "Скрытый"),
(flag: faSysFile; name: "Системыный файл"),
(flag: faVolumeID; name: "Метка диска"),
(flag: faDirectory; name: "Директория"),
(flag: faArchive; name: "Архивный"),
(flag: faSymLink; name: "Символическая ссылка"),
(flag: faAnyFile; name: "Обычный файл"));
var
i: integer;
begin
Result:= "";
for i := low(FILE_ATTRIBUTES) to high(FILE_ATTRIBUTES) do
begin
with FILE_ATTRIBUTES[i] do
if Value and flag = flag then
begin
if Result <> "" then
Result := Result + ", " + name
else
Result := name;
end;
end;
end;
Только вот faAnyFile используется только при поиске, по-моему. В атрибутах файлов этого флага нет.
← →
Омлет © (2012-06-02 11:18) [6]
> Юрий Зотов © (02.06.12 08:02) [2]
А точно, faAnyFile - это не флаг, а набор флагов.
← →
Омлет © (2012-06-02 11:21) [7]
function GetAttributes(Value: LongInt): string;
const
FILE_ATTRIBUTES: array[0..6] of record flag: cardinal; name: string end =
((flag: faReadOnly; name: "Только для чтения"),
(flag: faHidden; name: "Скрытый"),
(flag: faSysFile; name: "Системыный файл"),
(flag: faVolumeID; name: "Метка диска"),
(flag: faDirectory; name: "Директория"),
(flag: faArchive; name: "Архивный"),
(flag: faSymLink; name: "Символическая ссылка"));
var
i: integer;
begin
Result:= "";
for i := low(FILE_ATTRIBUTES) to high(FILE_ATTRIBUTES) do
begin
with FILE_ATTRIBUTES[i] do
if Value and flag = flag then
begin
if Result <> "" then
Result := Result + ", " + name
else
Result := name;
end;
end;
if Result = "" then
Result := "Обычный файл";
end;
← →
Anatoly Podgoretsky © (2012-06-02 14:00) [8]> М (02.06.2012 10:45:03) [3]
Это не та справка.
← →
М (2012-06-02 15:20) [9]
> Anatoly Podgoretsky © (02.06.12 14:00) [8]
В смысле не та?
А какая должна быть?
← →
Anatoly Podgoretsky © (2012-06-02 16:12) [10]> М (02.06.2012 15:20:09) [9]
Должна быть по VCL
← →
Давайте будем жрать! (2012-06-02 16:31) [11]
> Anatoly Podgoretsky © (02.06.12 16:12) [10]
Да лучше б MSDN... Тогда бы анахронизмы вроде faVolumeID не всплівали.
← →
М (2012-06-02 17:45) [12]
> Anatoly Podgoretsky © (02.06.12 16:12) [10]
Она по VCL. Delphi 7.
← →
Anatoly Podgoretsky © (2012-06-02 19:42) [13]> М (02.06.2012 17:45:12) [12]
Приведен текст справки по CLX/Linux
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.124 c