Главная страница
    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.46 MB
Время: 0.052 c
4-1114683614
psa247
2005-04-28 14:20
2005.06.29
Корзина Windows


14-1117445185
keal
2005-05-30 13:26
2005.06.29
сайт delphigfx.mastak.ru умер?


3-1116840124
aleliko
2005-05-23 13:22
2005.06.29
И снова картинки ...


1-1117905329
sofs
2005-06-04 21:15
2005.06.29
как записать в мемо какой либо символ из кодовой таблицы Windows?


1-1118222047
РВА
2005-06-08 13:14
2005.06.29
Пароль при загрузке формы из DLL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский