2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: C# порядок логичeских операций
Сообщение19.07.2011, 15:25 
Заслуженный участник


26/07/09
1559
Алматы
Ну вот конкретный пример: программулька, которая ищет в текущем каталоге все файлы с атрибутами "скрытый" и "только для чтения". Обратите внимание на комбинирование целочисленных флажков faReadOnly и faHidden.

код: [ скачать ] [ спрятать ]
Используется синтаксис Delphi
var
    Data: TSearchRec;
    Attributes: Integer;

...

    Attributes:=faReadOnly+faHidden;

    if FindFirst('*.*', Attributes, Data)=0 then
    begin
        repeat
            if Data.Attr and Attributes = Data.Attr then
                MainForm.Filenames.Items.Add(Data.Name);
        until FindNext(Data)<>0;
        FindClose(Data);
    end;
 


N.B., Все флажки типа faReadOnly, faDirectory и т.д. -- суть степени двойки и поэтому "не пересекаются" (побитовое И между любыми двумя флажками дает ноль). :)

 Профиль  
                  
 
 Re: C# порядок логичeских операций
Сообщение20.07.2011, 04:20 
Заслуженный участник


15/05/05
3445
USA
ewert в сообщении #469524 писал(а):
Если байтовые, используемые в роли флажков, то -- можно, но смотрится как-то нелепо.
Об этом и было замечание Circiter'а насчет дельфи-кодеров.
Привычка использовать '+' вместо "or-ed combination" не столько нелепа, сколько опасна: можно случайно включить в сумму константу для комбинации битов. А некоторые (юные?) программисты, копирующие приемы гуру, могут и не понимать, в чем разница.

 Профиль  
                  
 
 Re: C# порядок логичeских операций
Сообщение20.07.2011, 18:49 
Заслуженный участник


11/05/08
32166
Circiter в сообщении #469592 писал(а):
   
Код:
    Attributes:=faReadOnly+faHidden;

Это я в курсе. Но это -- редчайшее исключение, и выигрыша в производительности не даёт.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group