Главная страница
    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.078 c
6-1218807638
_koha
2008-08-15 17:40
2010.08.27
Падает сокет усервера на WinAPI - не могу разобраться


15-1270240202
Юрий
2010-04-03 00:30
2010.08.27
С днем рождения ! 3 апреля 2010 суббота


15-1271795401
Юрий
2010-04-21 00:30
2010.08.27
С днем рождения ! 21 апреля 2010 среда


10-1165502198
YCH.Del
2006-12-07 17:36
2010.08.27
Excel, реализовать в Delphi VB шный оператор Set


15-1275598450
Медвежонок Пятачок
2010-06-04 00:54
2010.08.27
это фотошоп или все по честному?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский