Текущий архив: 2005.07.11;
Скачать: CL | DM;
ВнизКак проверить вхождение числа в перечисляемый тип? Найти похожие ветки
← →
Aleksandr. (2005-06-22 17:23) [0]Объявляется тип
type
TMyType = (mt1 = 1, mt2=20, mt3=35);
создается функция, которая целое число должна проверить для приведения типов, является ли оно входящим в этот тип:
function IsInType(const I : integer) : boolean;
var
x : integer;
begin
Result:=false;
for x:=Ord(Low(TMyType)) to Ord(High(TMyType)) do
if I=X then begin
Result:=true;
Break
end
end;
Но для данной функции тип должен быть заведомо известен (TMyType).
А можно ли сделать универсальную функцию, которой вторым параметром как-то загнать сверяемый тип?
← →
Digitman © (2005-06-22 17:28) [1]
> для приведения типов
приведением простых типов занимается компилятор, и речи о ран-тайм не идет и идти не может
← →
Aleksandr. (2005-06-22 17:28) [2]Тьфу, не туды тыркнул.
И как сделать перебор пользовательского типа, чтобы он в цикле for переходил не на x+1, а сразу на следующее значение типа (то есть с 1 на 20, а не 2)?
← →
Digitman © (2005-06-22 17:30) [3]оператор IN для множеств уже упразднили ?
← →
evvcom © (2005-06-22 17:30) [4]Посмотри в справке TTypeInfo и пример к GetEnumValue function. Похоже это то, что тебе надо.
← →
jack128 © (2005-06-22 17:31) [5]Aleksandr. (22.06.05 17:23)
нет. Для реализации подобной функции нужна RTTI информация, для перечисляемых типов, у которых явно задается порядковый номер элементов, такая информация не генерится. Так что каждый раз придется вручную проверку на допустимость значения делать..
← →
jack128 © (2005-06-22 17:33) [6]Aleksandr. (22.06.05 17:28) [2]
И как сделать перебор пользовательского типа, чтобы он в цикле for переходил не на x+1, а сразу на следующее значение типа (то есть с 1 на 20, а не 2)?
в твоем случаеvar
x: TMyType;
for x := low(TMyType) to high(TMyType) do
begin
i := Integer(TMyType);
...
end;
Digitman © (22.06.05 17:30) [3]
а где здесь множества? ;)
← →
evvcom © (2005-06-22 17:34) [7]А вообще, конечно, не представляю для чего это надо. Лучше обратить внимание на [3].
← →
Aleksandr. (2005-06-22 17:45) [8]спасибо. Придется в массив переделать...
← →
evvcom © (2005-06-22 17:47) [9]
> а где здесь множества? ;)
Видимо автор хочет проверять принадлежность числа тому или иному перечисляемому типу, хотя проще проверить на вхождение в то или иное множество, причем даже без дополнительной функции, работающей по принципу перебора.
← →
evvcom © (2005-06-22 17:48) [10]
> Придется в массив переделать...
Лучше в множества-константы, если я правильно понял, что надо.
Страницы: 1 вся ветка
Текущий архив: 2005.07.11;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.05 c