Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 20.02.2018
Сообщений: 2
1

Не могу разобраться с If-ами. Не могу найти ошибку

29.09.2018, 19:11. Просмотров 734. Ответов 3
Метки нет (Все метки)


Только начал знакомство с программированием. Преподаватель задал задание, написать программу в VLC form, которая:
1) Здоровается
2) Спрашивает имя
3) Спрашивает как дела
4) Спрашивает возраст
5) Прощается по имени

Работал в Delphi Berlin
Создал одну кнопку, один Edit и один Label.
Мой код ( не до конца, если кто не понял)

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Var
name: string;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Label1.Caption = 'Welcome! Click on "start" to begin!' then
 
  Label1.Caption:= 'What is your name?';
   if Edit1.Text <> '' then
    begin
    name:=Edit1.Text;
    Label1.Caption:= 'Hello, ' + name + '! How do you do?';
    Edit1.Text:='';
    end;
 
if Label1.Caption = 'Hello, ' + name + '! How do you do?' then
  if Edit1.Text <> '' then
    begin
      if (Edit1.Text ='Fine') or (Edit1.Text ='fine') or (Edit1.Text ='Ok') or (Edit1.Text ='ok') or (Edit1.Text ='Not bad') or (Edit1.Text ='not bad') then
        Label1.Caption:= 'Happy to hear that! How old are you?';
      if (Edit1.Text ='Bad') or (Edit1.Text ='bad') or (Edit1.Text ='Terribel') or (Edit1.Text ='terribel') then
        Label1.Caption:= 'Sorry to hear it. How old are you?';
    end;
 
 
end;
По непонятным мне причинам, после того, как программа спрашивает как дела, она опять со мной здоровается и вместо имени то как я себя чувствую.
Т.е контекст такой?
What is your name?
такой то такой то
Hello, такой то такой то! How do you do?
Fine
Hello, Fine! How do you do?

Ошибка вроде как банальная, но я ее найти не могу. Буду благодарен за помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.09.2018, 19:11
Ответы с готовыми решениями:

Не могу найти ошибку!! не могу не как разобраться! надо до завтра.
условие: Для 7 человек, среди которых есть мужчины и женщины, хранятся следующие данные: имя, пол...

Найти ошибку в функции fprintf. не могу разобраться с форматом double
есть структура: struct Abonent { char nomer; double ostatok; char tarif; }arr ; есть...

Задали работу, не могу разобраться. Используется делфи 10, не могу разобраться, как это сделать
В одномерном массиве, состоящем из n вещественных элементов, вычислить: минимальный элемент массива...

Выдает ошибку, не могу разобраться
Ошибка Unit1.pas(35): Illegal character in input file: '*' ($A0) Код программы:...

3
162 / 111 / 59
Регистрация: 12.07.2018
Сообщений: 277
29.09.2018, 19:21 2
Цитата Сообщение от Dmitriy1221 Посмотреть сообщение
Ошибка вроде как банальная
Ошибка вот здесь
Delphi
1
2
3
if Edit1.Text <> '' then
 begin
 name:=Edit1.Text;
Любой ответ в Edit1 рассматривается как ввод имени.
Надо в начале программы присвоить name:=''; и изменить if на
Delphi
1
if Edit1.Text <> '' and name = '' then
1
Модератор
6757 / 4351 / 1869
Регистрация: 21.01.2014
Сообщений: 18,367
Записей в блоге: 3
01.10.2018, 00:39 3
Цитата Сообщение от Dmitriy1221 Посмотреть сообщение
Не могу разобраться с If-ами
так, может быть, ну их нафиг, эту кучу if-ов? Используйте один case - и всего делов...
Цитата Сообщение от Dmitriy1221 Посмотреть сообщение
Спрашивает как дела
М-да, порадовало... Тут 75% пользователей по русски-то без ошибок писать не могут, а Вы хотите, чтобы Вам по английски отвечали... Ну а если того варианта, что пользователь ответит, в Вашем списке не будет, что тогда?
Цитата Сообщение от Dmitriy1221 Посмотреть сообщение
Создал одну кнопку
Я бы создал 2: одна для того, чтобы была возможность в любой момент выйти из программы.
пример
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private { Private declarations }
    Name: String;
    Step: integer;
    Answ: TStringList;
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 Step := 0;
 Answ := TStringList.Create;
 Answ.Add('fine');
 Answ.Add('ok');
 Answ.Add('not bad');
 Answ.Add('bad');
 Answ.Add('terribel');
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 case Step of
  0 : begin
       Edit1.Visible := true;
       Label1.Caption := 'What is your name?';
       Button1.Caption := 'Next';
       Edit1.Clear;
       Edit1.SetFocus;
      end;
  1 : begin
       if Length(Trim(Edit1.Text)) = 0 then
        begin
         ShowMessage('You must enter your name!');
         Exit;
        end;
       Name := Edit1.Text;
       Label1.Caption := Format('Hello, %s! How do you do?', [Name]);
      end;
  2 : begin
       case Answ.IndexOf(AnsiLowerCase(Edit1.Text)) of
        0..2 : Label1.Caption := 'Happy to hear that! How old are you?';
        3..4 : Label1.Caption := 'Sorry to hear it. How old are you?';
       else Label1.Caption := 'Not entirely clear, probably, everything is fine! How old are you?';
       end;
      end;
  3 : begin
       if Length(Trim(Edit1.Text)) = 0 then
        begin
         ShowMessage('I do not know why you need this, but you must enter the age!');
         Exit;
        end;
       Label1.Caption := Format('Goodbye %s', [Name]);
       Button1.Enabled := false;
       Edit1.Visible := false;
       Exit;
      end;
 end;
 Edit1.Clear;
 Edit1.SetFocus;
 inc(Step);
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
 Answ.Free;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
 Close;
end;
 
end.
0
Модератор
1263 / 856 / 206
Регистрация: 31.05.2013
Сообщений: 5,851
Записей в блоге: 6
01.10.2018, 13:12 4
А ещё лучше забить ListBox, который меняет свою длину и содержание при клике по кнопке. И пусть пользователь выбирает из листбокса. А Вы просто будете оперировать с его индексами.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.10.2018, 13:12

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

в программе С++ выдает ошибку, не могу разобраться.
#include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;windows.h&gt; void RusVivod(char RusText); ...

Не могу разобраться с задачей выдает ошибку
Для созданного класса, создать класс-потомок с полями, указанными в задании по варианту....

Игра крестики нолики, не могу разобраться с циклом не нахожу ошибку
Код еще не дописан во функции main но компилятор уже ругается на цикл whileбподстажите что нужно...

Выдает ошибку в массиве,не могу разобраться,а надо бы по быстрее. Пожалуйста
хотела научиться сделать вывод/ввод значении с БД пока что есть два файла index.php and db.php...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.