Всем привет)
Возник вопрос по поводу перечислимых типов. Точнее преобразования Integer -> "Перечислимый тип".
И так, объявлен тип TLMsgType = (ltError = 0, ltWarning, ltInformation, ltDebug);
сохраняю его в БД преобразованием в Integer, Integer(LMsgType). При загрузке и БД. Там может отказаться любое число которое не входит в диапазон (а входящие данные нужно проверять).
Вопрос в том как наиболее эффективно проверять входит в это число в диапазон Перечислимого типа или нет? Типов много... поэтому собственно и вопрос...
Наиболее простой вариант я написал
| Код | function isRangeInType(const AValue: TLMsgType): Boolean; overload; begin // Result := not (AValue < Low(TLMsgType)) or (AValue > High(TLMsgType)); представьте, так не работает)) (всегда возвращает true) сам в шоке ну не суть) ниже работающая версия
if (AValue < Low(TLMsgType)) or (AValue > High(TLMsgType)) then Result := False else Result := True; end;
|
|