![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Множества... [D7, WinXP]
AndrewVolkov © (2002-11-19 17:21:00)procedure TForm1.Button1Click(Sender: TObject);
Type
TYN = (Yes, No);
Var YNSet: set of TYN;
begin
if (Edit1.Text in YNSet) then label1.Caption:="OK";
end;
При компиляции выкидывает, что [Error] Unit1.pas(33): Incompatible types: "TCaption" and "TYN".
Где ошибка???
Спасибо
Poirot (2002-11-19 18:24:00) [1]
> han_malign ©
Ага!!! Точно 8 байт!!! 1 или 32 (32*8=256) простая математика!!!
AndrewVolkov (2002-11-19 18:08:00) [2]Большое спасибо всем. Тады наверно со СтрингЛистом буду делать.
Жаль что множества какие то покоцанные...
han_malign (2002-11-19 17:58:00) [3]Причем максимальный размер Set- 8 байт, так что максимум 256 элементов (byte,char или перечисление).
Marcus (2002-11-19 17:54:00) [4]> Это как - числовые константы??? В смысле что он подразумевает вместо Йес и Но
Если знакомы с языком Си, то это тоже самое, что enum
Ord(Yes) или integer(Yes) даст 0
Ord(No) даст 1
Smithson (2002-11-19 17:53:00) [5]Подразумевает 0 и 1.
AndrewVolkov (2002-11-19 17:50:00) [6]>Marcus
объявление TYN = (Yes, No); подразумевает, что Yes и No -
числовые константы, а не текст
Это как - числовые константы??? В смысле что он подразумевает вместо Йес и Но
AndrewVolkov (2002-11-19 17:46:00) [7]> Marcus
Это жестоко. Вся идея была чтобы просто написать типа
if (data in Set) then
Reindeer Moss Eater (2002-11-19 17:45:00) [8]if Pos(Edit1Text,"_Yes_Да") > 0 then
Marcus (2002-11-19 17:43:00) [9]List := TStringList.Create;
List.Add("Yes");
List.Add("No");
if (List.IndexOf(TextForCheck) >= 0) then label1.Caption:="OK";
AndrewVolkov (2002-11-19 17:41:00) [10]А как тогда правильней это оформить, если не через множество, т.к. char меня не устраивает, хочу слова чтоьбы были
AndrewVolkov (2002-11-19 17:36:00) [11]Это просто для быстрой реализации самой идеи. Идея в следующем:
записываю в реестр данные. Потом читаю. В этот момент одна из проверок состоит в том, что я проверяю есть ли считываемое значение в допустимых значениях. Например я запомнил настройкуб которая может принимать 4 разных значения [Up, Down, Normal, NoXX]. Я читаю реестр и хочу быстро проверить : то что я прочитал есть в данном множестве или нет
(Прочитанное Данное есть в Множестве) then
если бы был 1 или 2 варианта то легче помойму написать
(прочитанное даное = param1) or (прочитанное даное = param2) но если их много, хотелось бы как нибудь поаккуратнее это оформить. Вот для этого пытаюсь сделать через множество, но оно почему то не идет...
Reindeer Moss Eater (2002-11-19 17:29:00) [12]Элементами множества могут быть только простые типы. Строки - не являются таковыми
Marcus (2002-11-19 17:28:00) [13]объявление TYN = (Yes, No); подразумевает, что Yes и No - числовые константы, а не текст
Если уж на то пошло, то
if (Edit1.Text[1] in ["Y", "N"]) then ...
MBo (2002-11-19 17:27:00) [14]Set - только для перечислимых типов, а не для строк
icWasya (2002-11-19 17:25:00) [15]А что такое
if (Edit1.Text in YNSet)