Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Вниз

Включение элемента в множество. Вишу...   Найти похожие ветки 

 
-=XP=- ©   (2005-06-08 15:09) [0]

Что-то я совершенно конкретно завис.

Объявлены типы и константы:

type
 TrServiceAccess = $00..$1f;
 TrServiceAccesses = set of TrServiceAccess;

const
 saModuleCreate: TrServiceAccess = $00;
 saRecordCreate: TrServiceAccess = $01;
 saGetRandomList: TrServiceAccess = $02;
 saReserved1: TrServiceAccess = $03;
 saReserved2: TrServiceAccess = $04;
 saServiceCreate: TrServiceAccess = $05;
 saServiceUse: TrServiceAccess = $06;


Есть функция:

function TAccessManager.CheckAccess(const a_SID: TGUID; const a_Right: TrServiceAccess): boolean;
begin
 ...
 Result := (a_SID = SYSTEM_SID) and (a_Right in [saServiceUse, saRecordCreate]); // Строка проверки
 ...
end;


Вызываю:

B := CheckAccess(SYSTEM_SID, saServiceUse);

В результате B = FALSE;

Прохожу отладчиком - и на "Строке проверки" в Watch выдает для констант saServiceUse значение 4, а для saRecordCreate значение 14.

Мне кажется, у меня уже мозги где-то зависли. Я с множествами ничего не напутал?

Дополнительная информация:
1. Используется множество модулей DLL. Внутри них по запросу создаются некие объекты и возвращаются интерфейсные ссылки на эти объекты. Все проекты на данный момент в одной проектной группе. ПереBuilding всех модулей единым махом не приводит ни к каким результатам - все равно эти константы равны 4 и 14.
2. На скорую руку создал новый проект, подсоединил модуль, в котором определяются эти типы и константы (первый фрагмент кода), написал строку (saServiceUse in [saServiceUse, saRecordCreate]) и все работает как надо, в Watch константы равны 1 и 6.

Что с ним сделать, чтобы оно развисло? Или чтобы я развис? :)


 
Alexander Panov ©   (2005-06-08 15:16) [1]

(a_SID = SYSTEM_SID) - здесь условие выполняется?


 
-=XP=- ©   (2005-06-08 15:29) [2]

(a_SID = SYSTEM_SID) - здесь условие выполняется?

Да. Тут все нормально, выполняется.

Вопрос в том, что при вызове:

CheckAccess(SYSTEM_SID, saServiceUse);

в метод передается saServiceUse = $06, а внутри метода эта константа равна saServiceUse = $04.

Что-то меня все сильнее преследует мысль, что при компиляции одной из библиотек DLL используется старая версия модуля с другим значением константы.

Пущусь-ка я на поиски "ископаемого мусора". :)


 
-=XP=- ©   (2005-06-08 16:50) [3]

Нашел. :)
Старый, двухмесячной давности, dpk валялся в одной из папок Delphi. А на него ссылались пакеты с компонентами, которые эти два месяца висели в палитре.
Удалил, перекомпилировал несколько пакетов, и все заработало.
Правда, при этом rtl.dpk под горячую руку попался. :/
Пришлось в корзине выискивать. Тоже нашел. Какой я сегодня находчивый! ;)

P.S. Вот и не верь после этого в гороскопы. Вчера какая-то ведущая ляпнула: "Проведете много времени в размышлениях о прошлом". :)


 
Anatoly Podgoretsky ©   (2005-06-08 16:57) [4]

-=XP=- ©   (08.06.05 16:50) [3]
Это не страшно, вот когда скажет "проведете много времени в размышлении о будушем" надо будет серьезно озаботиться.



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

Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.044 c
3-1115988123
Andarko
2005-05-13 16:42
2005.06.29
Создать поле


3-1116247658
Manfred8
2005-05-16 16:47
2005.06.29
OnCalcFields как выполнить только для текущей записи?


14-1117181522
TUser
2005-05-27 12:12
2005.06.29
Уплотнение элементов в памяти


3-1115971918
Delphi forever
2005-05-13 12:11
2005.06.29
Организация доступа к БД через Internet


14-1117835054
кактусбел
2005-06-04 01:44
2005.06.29
вычесление значение суммы рядов бесконечного ряда





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский