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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2012, 21:22   #1
Makotik
Новичок
Джуниор
 
Регистрация: 20.05.2012
Сообщений: 4
По умолчанию delphi. работа с ComboBox (ошибка в коде)

Задание: написать программу подсчета числа слов в произвольной строке. В качестве разделителя может быть любое число пробелов. Для ввода строк и работы с ними использовать TComboBox. Ввод строки заканчивать нажатием клавиши Enter. Для выхода из программы использовать кнопку Close.

мой код выглядит следующим образом:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    Label2: TLabel;
    Label3: TLabel;
    BitBtn1: TBitBtn;
    ComboBox1: TComboBox;
    Label1: TLabel;
    procedure FormActivate(Sender: TObject);
    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure ComboBox1Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

    // Обработка события активизации формы
procedure TForm1.FormActivate(Sender: TObject); 
begin
ComboBox1.SetFocus;                                  // Передача фокуса ComboBox1
end;

   // Обработка события нажатия левой клавиши мыши
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then begin                                    // Если нажата клавиша Enter, то...
ComboBox1.Items.Add(ComboBox1.Text);  // Строка из окна редактирования 
                                                                      // заносится  в список выбора
ComboBox1.Text:='';                                    // Очистка окна редактирования
                 end;
end;

procedure TForm1.ComboBox1Click(Sender: TObject);
var st : string;
     n,i,nst,ind: integer;
begin
  n:=0;                                                           // Содержит число слов
      ind:=0;
  nst:=ComboBox1.ItemIndex;                     // Определение номера выбранной строки
  st:=ComboBox1.Items[nst];             // Занесение выбранной строки в переменную st
    for i:=1 to Length(st) do begin                 // Просмотр всех символов строки st
       case ind of
           0 : if st[i]<>' ' then begin                   // Если встретился символ после пробела
                 ind:=1;
                  n:=n+1;                                     // Число слов увеличивается на единицу
                                 end;
           1 : if st[i]=' ' then ind:=0;                  // Если встретился пробел после символов
                             end;

         end;

   Label3.Caption:=IntToStr(n);                 // Вывод числа слов в Label3

end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Application.Terminate;
end;

end.


Проблема заключается в том, что после ввода текста в строку ComboBox и нажатии Enter "выскакивает" звук об ошибке и ничего далее не происходит (строка не добавляется в список и не выводится число строк в Label3)

помогите пожалуйста разобраться чего не хватает или в чем ошибка.
Makotik вне форума Ответить с цитированием
Старый 20.05.2012, 21:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
"выскакивает" звук об ошибке
Точно ли об ошибке?
Цитата:
nst:=ComboBox1.ItemIndex; // Определение номера выбранной строки
st:=ComboBox1.Items[nst]; // Занесение выбранной строки в переменную st
А если там ничего не выбрано? Надо обрабатывать и такое исключение.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.05.2012, 21:38   #3
Makotik
Новичок
Джуниор
 
Регистрация: 20.05.2012
Сообщений: 4
По умолчанию

возможно не так выразилась. звук не ошибки а ... как же объяснить...
так пищит когда невозможно текст ввести или что-то подобное.

даже если ничего не выбрано все тоже самое происходит. вернее ничего не происходит(
Makotik вне форума Ответить с цитированием
Старый 20.05.2012, 21:53   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А у тебя там на клавиатуре ничего не залипло?
Я твой код проверил - писка нет лишнего (хотя у меня звуки темы отключены), да и в Лабель значение заносится верное.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.05.2012, 22:10   #5
Makotik
Новичок
Джуниор
 
Регистрация: 20.05.2012
Сообщений: 4
По умолчанию

не залипло ничего. на другом компе проверяла - не работает...
Makotik вне форума Ответить с цитированием
Старый 21.05.2012, 07:39   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Заархивируй и прикрепи сюда свой проект. Интересно что там у тебя такое пикает не в тему )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.05.2012, 12:32   #7
Makotik
Новичок
Джуниор
 
Регистрация: 20.05.2012
Сообщений: 4
По умолчанию

вот прилагаю архив
Вложения
Тип файла: rar лаб 5.rar (104.1 Кб, 18 просмотров)
Makotik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в коде (Delphi) Начинающий програм Помощь студентам 6 08.04.2012 13:26
Работа с матрицами.Ошибка в коде. Drago56 Общие вопросы C/C++ 10 27.03.2012 01:27
Ошибка в коде Delphi Начинающий програм Помощь студентам 6 06.02.2012 19:52