Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2010, 12:53   #1
designer999
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 187
По умолчанию не понятная ошибка в цикле case

Здраствуйте
Использую вот такую конструкцию цикла case

Код:
Var K:integer;
......
begin
case Memo4.Lines[12]=k of
1 : begin ComboBox4.itemIndex=0 end;
2 : begin ComboBox4.itemIndex=1 end;
3 : begin ComboBox4.itemIndex=2 end;
4 : begin ComboBox4.itemIndex=3 end;
5 : begin ComboBox4.itemIndex=4 end;
end;
end;
Но что выскакивает такая ошибка:


В чём может быть баг ?
designer999 вне форума Ответить с цитированием
Старый 27.03.2010, 12:59   #2
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от designer999 Посмотреть сообщение
Здраствуйте
Использую вот такую конструкцию цикла case

Код:
Var K:integer;
......
begin
case Memo4.Lines[12]=k of
1 : begin ComboBox4.itemIndex=0 end;
2 : begin ComboBox4.itemIndex=1 end;
3 : begin ComboBox4.itemIndex=2 end;
4 : begin ComboBox4.itemIndex=3 end;
5 : begin ComboBox4.itemIndex=4 end;
end;
end;
Но что выскакивает такая ошибка:


В чём может быть баг ?
Во-первых - case - это оператор выбора, но никак не цикла! Поэтому конструкция "case Memo4.Lines[12]=k of" никак не допустима! Параметром оператора case должена быть переменная порядкового типа, а ты размещаешь там логического типа "Memo4.Lines[12]=k", вот и несовместимость типов.
Почитай об этом операторе...
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Grag; 27.03.2010 в 13:02.
Grag вне форума Ответить с цитированием
Старый 27.03.2010, 13:06   #3
СВ9
 
Регистрация: 25.03.2010
Сообщений: 9
По умолчанию

"Case" это не цикл, а вариантный выбор.
Что такое операция Memo4.Lines[12]=k – присвоение, или проверка?
Здесь, вообще должна стоять целочисленная переменная, например, просто “k”.

Последний раз редактировалось СВ9; 27.03.2010 в 13:08.
СВ9 вне форума Ответить с цитированием
Старый 27.03.2010, 13:06   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Сообщение от designer999 Посмотреть сообщение
В чём может быть баг ?
Приведенный Вами код это один сплошной баг, скажите лучше что Вы хотите сделать с его помощью, т.к. из кода это понять невозможно.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 27.03.2010, 13:36   #5
designer999
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 187
По умолчанию

Использовал цикл при запуске
Код:
if Memo4.Lines[13]='1'  then begin ComboBox4.itemIndex:=1; end;
if Memo4.Lines[13]='2'  then begin ComboBox4.itemIndex:=2; end;
if Memo4.Lines[13]='3'  then begin ComboBox4.itemIndex:=3; end;
if Memo4.Lines[13]='4'  then begin ComboBox4.itemIndex:=4; end;
Думал заменить на конструкцию case, но теперь вижу что не резонно.
designer999 вне форума Ответить с цитированием
Старый 27.03.2010, 13:38   #6
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от mutabor Посмотреть сообщение
Приведенный Вами код это один сплошной баг, скажите лучше что Вы хотите сделать с его помощью, т.к. из кода это понять невозможно.
Да вроде бы мысль какая-то пробивается, но мутная очень
Видимо, предполагается связь мемо и комбобокса, т.е. они имеют одинаковые итемы, и в зависимости от выделенного итема в мемо нужно этот итем выводить в комбобокс. Лично я так понял это...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 27.03.2010, 13:42   #7
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от designer999 Посмотреть сообщение
Использовал цикл при запуске
Код:
if Memo4.Lines[13]='1'  then begin ComboBox4.itemIndex:=1; end;
if Memo4.Lines[13]='2'  then begin ComboBox4.itemIndex:=2; end;
if Memo4.Lines[13]='3'  then begin ComboBox4.itemIndex:=3; end;
if Memo4.Lines[13]='4'  then begin ComboBox4.itemIndex:=4; end;
Думал заменить на конструкцию case, но теперь вижу что не резонно.
Вот как раз и резонно, во-первых текст программы читается более понятно при использовании case, а во-вторых, нафига делать кучу проверок оператором if then. Ведь все они будут выполнены не зависимо от того, что даже если первый окажется истинным!!!
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 27.03.2010, 13:54   #8
designer999
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 187
По умолчанию

Цитата:
Сообщение от Grag Посмотреть сообщение
Видимо, предполагается связь мемо и комбобокса, т.е. они имеют одинаковые итемы, и в зависимости от выделенного итема в мемо нужно этот итем выводить в комбобокс. Лично я так понял это...
правильно поняли
я тоже понимаю что лучше case, но реализовать с помою case уже второй день не могу
designer999 вне форума Ответить с цитированием
Старый 27.03.2010, 14:21   #9
MMM_Corp
Пользователь
 
Регистрация: 24.03.2010
Сообщений: 17
По умолчанию

чтото мудрите... а так разве нельзя?)

ComboBox4.itemIndex:=strtoint(Memo4 .Lines[13]);
MMM_Corp вне форума Ответить с цитированием
Старый 27.03.2010, 16:15   #10
designer999
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 187
По умолчанию

Цитата:
Сообщение от MMM_Corp Посмотреть сообщение
чтото мудрите... а так разве нельзя?)

ComboBox4.itemIndex:=strtoint(Memo4 .Lines[13]);
это вообще с другой оперы
designer999 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в цикле Oleg Romanchuk Помощь студентам 10 17.11.2009 06:34
Ошибка в цикле Belokuraya Microsoft Office Excel 11 18.08.2009 15:52
Ошибка в цикле Alamez Общие вопросы Delphi 2 05.04.2009 15:12
не понятная ошибка ManInBlack Помощь студентам 2 20.10.2008 23:33