Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Программа "Защита от дураков", оператор case   Найти похожие ветки 

 
Первокурсница ©   (2010-03-13 12:27) [0]

Доброго времени суток!
У меня программа поиска элемента, вводимого в ячейки StringGrid. При нахождении элемента показывается сообщение "Найден", если же такого эл-та нет, то соответственно "Не найден". Преподаватель велел поставить в программу "Защиту от дураков", то есть если за компьютер садится какая-нибудь Баба Маня и вместо цифр начнёт писать элементы словами или писать символы или выходить за границы массива или дробные писать (в общем все-все-все её неправильные действия я должна предугадать), то программа НЕ должна вылетать, никаких окошек с крестиком не должно появляться, а должно показываться "Недопустимый элемент" и неправильное значение в ячейке или эдите должно стираться. Я решила сделать это через case, ну и затупила... Ну редко я пользуюсь этим case! Понимаю что это нехорошо, и хочу исправиться
Вот программа:
unit laba3;

interface

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

type
 TForm1 = class(TForm)
   Button1: TButton;
   StringGrid1: TStringGrid;
   Edit1: TEdit;
   Edit2: TEdit;
   procedure Button1Click(Sender: TObject);
   procedure Edit1Change(Sender: TObject);
   procedure Edit1KeyPress(Sender: TObject; var Key: Char);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 I,J: integer;
implementation

{$R *.dfm}
procedure TForm1.Edit1Change(Sender: TObject);
begin
StringGrid1.ColCount:=StrToInt(Edit1.Text)+1;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
SIZE=20;
var
a: array[1..SIZE] of integer;
n: integer;
found: boolean;
i,m: integer;
begin
{ввод числа элементов массива n<20}
n:=StrToInt(Edit1.text);
{ввод массива }
for i:=1 to n-1 do
 a[i]:=StrToInt(StringGrid1.Cells[i,1]);
{ввод искомого элемента массива}
m:=StrToInt(Edit2.text);
{процедура поиска в массиве}
found:=false;
i:=1;
repeat
 if a[i]=m then
  found:=true
 else
  i:=i+1;
until (i>n) or (found = true);
if found=true then
 ShowMessage("Совпадение с элементом номер "+ IntToStr(i)+#13+
             "Поиск успешно завершен")
else
 ShowMessage("Заданный элемент не найден!");
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
"1": ;
"2": ;
"3": ;
"4": ;
"5": ;
"6": ;
"7": ;
"8": ;
"9": ;
"0": ;
else begin
Key:="";
ShowMessage("Недопустимый элемент!");
end;
end;
end.

Жирным выделено то что программа мне подсвечивает.
Как исправить сиё недоразумение?


 
Anatoly Podgoretsky ©   (2010-03-13 12:38) [1]

case Key of
"0".."9": ;

Key := #0;

ShowMessage надо убрать, а то баба Маня, скажет кто из вас дура, заменить чем ни будь менее надоедливым, обычно достаточно звука Beep.

А что у тебя подсвечивает на важно, важно что говорит.


 
Anatoly Podgoretsky ©   (2010-03-13 12:39) [2]

Кстати case тут просто лишний, хватает IF


 
Первокурсница ©   (2010-03-13 12:46) [3]

Спасибо большое:)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.059 c
2-1274358308
Tifon
2010-05-20 16:25
2010.08.27
Как определить какая кнопка была нажата на клавиатуре.


2-1268971257
Delphist
2010-03-19 07:00
2010.08.27
adocommand1.execute


15-1266485663
Guresff
2010-02-18 12:34
2010.08.27
Как организовать прием платежей на сайте?


2-1275805199
Denisrf
2010-06-06 10:19
2010.08.27
Не получается создать окно.


15-1274995784
Юрий
2010-05-28 01:29
2010.08.27
С днем рождения ! 28 мая 2010 пятница





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский