Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с Case

5.9K
19 декабря 2006 года
Eksell
49 / / 16.11.2005
Всем привет. Дело в том что я пытаюсь добавить например
edit1.text в case но у меня чето не получается... не знаю как правельно это сделать...

Я делаю та

Case edit1.text of
'hello' : Memo1.lines.add('Привет');
end;

но это не правельно... подскажите пожалуйста как решить данную проблему...
Спасибо!
14K
19 декабря 2006 года
DarkKnight
41 / / 18.11.2006
вроде все правильно.в какой строке ошибка?
387
19 декабря 2006 года
Ihbif19
421 / / 28.10.2004
Цитата: Eksell

Case edit1.text of
'hello' : Memo1.lines.add('Привет');
end;
!


А мне кажется с текстом проблема будет...
Лучше If Then использовать
P.S. integer and char - читайте ошибки при компиляции и понимайте

23K
19 декабря 2006 года
prednizolon
10 / / 16.12.2006
Цитата: Eksell
Всем привет. Дело в том что я пытаюсь добавить например
edit1.text в case но у меня чето не получается... не знаю как правельно это сделать...

Я делаю та

Case edit1.text of
'hello' : Memo1.lines.add('Привет');
end;

но это не правельно... подскажите пожалуйста как решить данную проблему...
Спасибо!


посмотри в хелпе, какие типы нельзя использовать: string нельзя
используй оператор if для своей задачи

5.9K
19 декабря 2006 года
Eksell
49 / / 16.11.2005
Дело в том что для моей проги оператор "if" не покатит, там очень много писанины получится... забутаться можно...

А вообще мне нужно сделать программу каторая так сказать должна обьщатся с пользователем... т.е. задавать вопросы ему...

Это курсовая работа на тему спорта... т.е. она должна определить какой вид спорта подходит для данного человека... задавая ему вопросы...
методом исключения...

Например выводит такие вопросы :
1: Какой вид спорта ты предпочитаешь, Физический или Логический...
Если пользователь ответит например Физический тогда программа задает следующий вопрос :
2: Хотите играть Руками, ногами, и т.д....
Если пользователь ответит например "Ногами" тогда она задает следующий вопрос... и методом исключения она в конце сообщает для какого спорта ты годишься... вот... примерно так...

Подскажите как лучше это сделать, как использовать оператор "case" в данной программе... посоветуйте как лучше всего поступить...

Если не трудно, дайте небольшой примерчик... )
Очень нужно, помогите пожалуйста... начинающему программисту...

Вот схема того что я пытаюсь сотворить http://worldofdelphi.narod.ru/kurs.jpg

Спасибо заранее!
547
20 декабря 2006 года
Hydra
488 / / 20.06.2006
И ты всю логику программы switch'ами делаешь =8-O
Мдя... И не лень же человеку...
5.9K
20 декабря 2006 года
Eksell
49 / / 16.11.2005
Цитата: Hydra
И ты всю логику программы switch'ами делаешь =8-O
Мдя... И не лень же человеку...



А по другому я не знаю как эту задачу решить...
Посоветуйте пожалуйста как легче и лучше сделать это...

5.9K
20 декабря 2006 года
Eksell
49 / / 16.11.2005
У меня тут есть еще один небольшой вопросик по теме..
Значит у меня есть форма, в низу у меня Edit а выше Memo
Значит программа должна задавать вопросы, т.е. выводить их в
Мемо, по очередно и ждать ответа пользователя (в Edit) (Я чуть ниже давал ссылку на схему алгоритма)...

Я делаю так :

...
Const
Comp = 'Alloc: ';
keywords: array [1..8] of string = ('физический','логический','одиночный','командный','a.m','вода','лёд','отлетика');
...

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
i: integer;
s: string;
begin
if Key = #13 then
begin
s := Edit1.text;
i := 1;
while (s <> keywords) and (i <= length(keywords)) do
inc(i);


case i of
1: begin // If "Fizic" then
Memo1.Lines.Add(Comp+'Предпочитаете : одиночный, командный или A.M?');
case i of // If "одиночный" then
3: begin
Memo1.Lines.Add(Comp+'На воде, на льду или отлетику?');
case i of // If "вода" then
6: begin
Memo1.Lines.Add(Comp+'Ты хорош для "Плаванья"!');
end;
end;
case i of // If "Лёд" then
7: begin
Memo1.Lines.Add(Comp+'Ты хорош для "Катания на льду"!');
end;
end;
case i of
8: begin
Memo1.Lines.Add(Comp+'Ты хорош для "бега"!');
end;
end;
end;
end;
end;
end;{case}
end;

но чтото не то... не работает это правельно...
Подскажите, в чем ошибка и как лучше сделать
Спасибо заранее! )
11K
20 декабря 2006 года
_io_lock
73 / / 05.10.2006
[QUOTE="Eksell"]А по другому я не знаю как эту задачу решить...
Посоветуйте пожалуйста как легче и лучше сделать это...[/QUOTE]
Кодируй ответы пользователя целыми числами, строки ваабще не трогай, только пропиши их в графичесом интерфейсе и все.
5.9K
20 декабря 2006 года
Eksell
49 / / 16.11.2005
Блин... столько проблем... вот еще одна )

var
S: string;
begin
S := Edit1.Text;
case TNumericChoiceParent(GetEnumValue(TypeInfo(TNumericChoiceParent), 'ncp_' + S)) of
ncp_Fizic: memo1.Lines.Add('Что выбираешь, A, B?');
end;

case TNumericChoiceParent(GetEnumValue(TypeInfo(TNumericChoiceParent), 'ncp_' + S)) of
ncp_A: begin
memo1.Lines.Add('Что выбираешь, B, C, D?');
case TNumericChoiceParent(GetEnumValue(TypeInfo(TNumericChoiceParent), 'ncp_' + S)) of
ncp_B: memo1.Lines.Add('...');
ncp_C: memo1.Lines.Add('...');
ncp_D: memo1.Lines.Add('...');
end;
end;
end;

end;

Вроде все прально... ) Но почему не работает Case где 3 варианта (B,C,D)? Подскажите пожалуйста... и как сделать так чтоб заработала (без If'а)
Спасибо! )
14K
21 декабря 2006 года
DarkKnight
41 / / 18.11.2006
хз,у меня когда то давно так же как у тябя было,все работало )
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог