![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
![]()
Добрый день!
Вот конструкция кода: type TSampleType = (stX, stY, stZ); TSampleTypes = set of TSampleType; private FstX; FstY; FstZ : String; FSampleType : TSampleTypes; procedure Form1.Create(Sender : TObject); begin FSampleType := [stX]; ............................... end; function GetInfoAboutSampleType() : String; begin case Integer(FSampleType) of // компилятор выдает ошибку здесь, когда заменяю Integer(FSampleType) на Byte(FSampleType) ошибки нет 0 : Result := FstX; 1 : Result := FstY; 2 : Result := FstZ; 0, 1 : Result := FstX + FstY; // компилятор выдает ошибку здесь 0, 2 : Result := FstX + FstZ; // компилятор выдает ошибку здесь 1, 2 : Result := FstY + FstZ; // компилятор выдает ошибку здесь else Result := FstX + FstY + FstZ; end; end; Как исправить, чтобы код работал корректно? Все спасибо! |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
![]()
Тип множество не может быть более 255 элементов, поэтому byte подходит, а integer или скажем Word не подойдут.
Кроме того один и тот же указатель не может указывать на разные команды (0,1,2 у вас по два раза). Последний раз редактировалось puporev; 05.04.2008 в 21:26. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
![]()
Спасибо за ответ, но как тогда прописать строки иначе:
0, 1 : Result := FstX + FstY; // компилятор выдает ошибку здесь 0, 2 : Result := FstX + FstZ; // компилятор выдает ошибку здесь 1, 2 : Result := FstY + FstZ; // компилятор выдает ошибку здесь мне нужно именно такие значения Result? Спасибо! |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
![]()
Во-первых, строку FstX; FstY; FstZ : String; нужно записать правильно, используя запятые FstX, FstY, FstZ : String;
Во-вторых, раз уж идет работа с множествами, так нужно использовать команды множеств, а не перечислений. Например, так: Код:
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
![]()
Спасибо за ответ, но возможно ли при конструкции в последнем ответе получить возможные варианты для предложенной к обсуждению мной функции?
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
![]()
Честно говоря, не уверен, что полностью уловил смысл этой фразы. Могу только сказать, что тот код, который я привел, выдаст любой вариант сочетаний строк в зависимости от значения FSampleType - от пустой строки до суммы всех трех строк FstX, FstY и FstZ.
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
![]()
Спасибо я все пронял!
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
IdHTTP1 некорректно работает | nike-p | Работа с сетью в Delphi | 9 | 23.07.2008 23:13 |
скажите почему работает некорректно | pimiento | Общие вопросы C/C++ | 6 | 29.05.2008 17:21 |
Задача на case | klop.92 | Помощь студентам | 4 | 28.04.2008 21:17 |
Конструкция файла | SunKnight | Общие вопросы Delphi | 4 | 23.04.2008 08:26 |
Case из STRING. HELP! | Altera | Компоненты Delphi | 12 | 24.02.2008 12:17 |