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

Вниз

Множества   Найти похожие ветки 

 
SPeller   (2002-05-23 11:58) [0]

Здравствуйте! У меня возник такой вопрос: можно ли сделать множество, содержащее элементы типа Longint aka Integer? Обычным способом типа: Handles:set of longint; не прокатывает, говорит что надо до 256 элементов. Мне надо максимум, чтобы штук 50 элементов было во множестве. Можно ли это сделать, да ещё и чтобы проверять на наличие во множестве было проще чем перебирать эл-ты массива, иначе вопрос отпадёт сам собой?


 
Внук   (2002-05-23 12:07) [1]

Дело не в количестве. Множества могут базироваться только на том типе, значения функции Ord от элементов которого лежит между 0 и 255 (включительно).


 
Ally   (2002-05-23 12:08) [2]

Лучше сделать так:


...
type THandlesSet = set of Byte; {или = set of 1..51}
var HandlesSet: THandlesSet;
begin
...
HandlesSet := [Handle, Button1.Handle, Edit1.Handle]
...
end;
...


Конструкция set of 1..51 подразумевает, из какого количества элементов - of values of the same ordinal type - состоит набор.


 
Ally   (2002-05-23 12:11) [3]

В дополнение из хелпа про чтобы проверять на наличие во множестве:

The in operator tests set membership:

if "a" in MySet then ... { do something } ;
Every set type can hold the empty set, denoted by [].


 
Кулюкин Олег   (2002-05-23 12:50) [4]

2 SPeller © (23.05.02 11:58)
Может лучше хранить их в списке (TList)?


 
PVOzerski   (2002-05-23 13:15) [5]

2Ally © (23.05.02 12:08):
Так делать нельзя. Элемент множества set должен быть в диапазоне 0..255.
Если элементов может быть штук 50, то наилучший выход (хотя и не всегда
пригодный для конкретной задачи) - привязать к каждому возможному значению
некий ID в допустимом для set диапазоне b c этим ID работать. А один раз я
ухитрился "почти" упаковать в set"ы тип smallint, но довольно хитрым образом:
сделал set of byte и аrray[0..255]of set of byte. При проверке вхождения элемента
в этот квази-set я проверял вхождение младшего байта в 1-й set, а старшего - в
set-элемент массива с индексом, равным младшему байту. Понятно, что такой
подход к 32-разрядным элементам приведет к возникновению очень громоздких
конструкций.


 
SPeller   (2002-05-23 13:17) [6]

2Ally © (23.05.02 12:11)

Да что вы говорите?? :-)))


2Кулюкин Олег © (23.05.02 12:50)

Нет. Это для хука, я проверяю, есть ли обрабатываемый хэндл среди тех, которые мне нужны.


 
Кулюкин Олег   (2002-05-23 14:14) [7]

2 SPeller © (23.05.02 13:17)
MyList.IndexOf(Pointer(MyHandle)) - проверка, есть ли обрабатываемый хэндл среди тех, которые нужны.


 
erik   (2002-05-23 14:18) [8]

Тоды делай Array of Handle, а после поиск элемента. А множества это совсем другое MyType = (myHandle1, myHandle2, ...myHandleX) до 256. Но тебе это ненужно.


 
SPeller   (2002-05-23 15:59) [9]

Ну ладно, всем спасибо за советы...



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

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

Наверх





Память: 0.46 MB
Время: 0.008 c
1-17916
cyborg
2002-05-27 17:28
2002.06.06
Звук в фоновом режиме


1-17985
Fileev
2002-05-23 21:18
2002.06.06
EhLib и раскраска DBLookupComboboxEh


14-18105
CHEk
2002-04-03 22:45
2002.06.06
КАК сделать чтобы проограма была полностью невидимой


3-17771
roman_tutov@mail.ru
2002-05-13 13:56
2002.06.06
FibPlus


1-17972
Yanval
2002-05-28 14:24
2002.06.06
открытие файла с помощью моей программы





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