Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.02;
Скачать: CL | DM;

Вниз

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

 
AndrewVolkov   (2002-11-19 17:21) [0]

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".
Где ошибка???
Спасибо


 
icWasya ©   (2002-11-19 17:25) [1]

А что такое
if (Edit1.Text in YNSet)


 
MBo ©   (2002-11-19 17:27) [2]

Set - только для перечислимых типов, а не для строк


 
Marcus   (2002-11-19 17:28) [3]

объявление TYN = (Yes, No); подразумевает, что Yes и No - числовые константы, а не текст
Если уж на то пошло, то
if (Edit1.Text[1] in ["Y", "N"]) then ...


 
Reindeer Moss Eater   (2002-11-19 17:29) [4]

Элементами множества могут быть только простые типы. Строки - не являются таковыми


 
AndrewVolkov   (2002-11-19 17:36) [5]

Это просто для быстрой реализации самой идеи. Идея в следующем:
записываю в реестр данные. Потом читаю. В этот момент одна из проверок состоит в том, что я проверяю есть ли считываемое значение в допустимых значениях. Например я запомнил настройкуб которая может принимать 4 разных значения [Up, Down, Normal, NoXX]. Я читаю реестр и хочу быстро проверить : то что я прочитал есть в данном множестве или нет

(Прочитанное Данное есть в Множестве) then

если бы был 1 или 2 варианта то легче помойму написать

(прочитанное даное = param1) or (прочитанное даное = param2) но если их много, хотелось бы как нибудь поаккуратнее это оформить. Вот для этого пытаюсь сделать через множество, но оно почему то не идет...



 
AndrewVolkov   (2002-11-19 17:41) [6]

А как тогда правильней это оформить, если не через множество, т.к. char меня не устраивает, хочу слова чтоьбы были


 
Marcus   (2002-11-19 17:43) [7]

List := TStringList.Create;
List.Add("Yes");
List.Add("No");

if (List.IndexOf(TextForCheck) >= 0) then label1.Caption:="OK";


 
Reindeer Moss Eater   (2002-11-19 17:45) [8]

if Pos(Edit1Text,"_Yes_Да") > 0 then


 
AndrewVolkov   (2002-11-19 17:46) [9]

> Marcus
Это жестоко. Вся идея была чтобы просто написать типа
if (data in Set) then



 
AndrewVolkov   (2002-11-19 17:50) [10]

>Marcus

объявление TYN = (Yes, No); подразумевает, что Yes и No -
числовые константы, а не текст

Это как - числовые константы??? В смысле что он подразумевает вместо Йес и Но


 
Smithson ©   (2002-11-19 17:53) [11]

Подразумевает 0 и 1.


 
Marcus   (2002-11-19 17:54) [12]

> Это как - числовые константы??? В смысле что он подразумевает вместо Йес и Но

Если знакомы с языком Си, то это тоже самое, что enum

Ord(Yes) или integer(Yes) даст 0
Ord(No) даст 1


 
han_malign ©   (2002-11-19 17:58) [13]

Причем максимальный размер Set - 8 байт, так что максимум 256 элементов (byte,char или перечисление).


 
AndrewVolkov   (2002-11-19 18:08) [14]

Большое спасибо всем. Тады наверно со СтрингЛистом буду делать.
Жаль что множества какие то покоцанные...


 
Poirot ©   (2002-11-19 18:24) [15]


> han_malign ©

Ага!!! Точно 8 байт!!! 1 или 32 (32*8=256) простая математика!!!



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

Текущий архив: 2002.12.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
1-4418
Tyke
2002-11-21 15:23
2002.12.02
реализация шаблона Singleton


1-4435
Ренат
2002-11-19 08:24
2002.12.02
Типизированные файлы


1-4324
Трое из Леса
2002-11-21 16:14
2002.12.02
TWebBrowser


1-4338
Мазут Береговой
2002-11-22 01:02
2002.12.02
Как спрятать scrollbars в DBGrid?


4-4692
PHN
2002-10-18 01:22
2002.12.02
GetWindowText и WinSight