![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 22.05.2011
Сообщений: 1
|
![]()
помогите пожалуйста! программа производит арифметические операции(*,+,-,/) над двумя числами. числа и операция вводятся пользователем с клавиатуры.
у меня при нажатии кнопки "расчет"(есть такая на форме) всегда выводится сообщение "операции нет" в независимости от того верна операция или нет. не могу понять в чем ошибка. результат должен выводиться в edit4. форма одна. на ошибки соответствия компонентов и процедур к ним проверено. код программы: unit prilig3; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons; type TForm1 = class(TForm) Panel1: TPanel; Button1: TButton; BitBtn1: TBitBtn; Bevel1: TBevel; Edit1: TEdit; Label1: TLabel; Edit2: TEdit; Label2: TLabel; Edit3: TEdit; Label3: TLabel; Label4: TLabel; Edit4: TEdit; procedure Edit1KeyPress(Sender:TObject; var Key: Char); procedure Edit3KeyPress(Sender:TObject; var Key: Char); procedure Button1Click(Sender:TObject); procedure Edit1Exit(Sender:TObject); procedure Edit2Exit(Sender:TObject); procedure Edit3Exit(Sender:TObject); procedure BitBtn1Click(Sender: TObject); end; VarOperat = (Pius,minus,Mult,Divide,None); var Form1: TForm1; a,b: Integer; Operat: VarOperat = None; implementation {$R *.DFM} procedure TForm1.Edit1KeyPress(Sender:TObject ; var Key: Char); begin if not (Key in ['0'..'9','-',#8]) then key:=#0; end; procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char); begin if Length(Edit3.Text) = 0 then begin if not (Key in ['+','-','*','/',#8]) then key:=#0; end else key:=#0; end; procedure TForm1.Edit1Exit(Sender: TObject); begin a:=StrToInt(Edit1.Text); end; procedure TForm1.Edit2Exit(Sender: TObject); begin b:=StrToInt(Edit2.Text); end; procedure TForm1.Edit3Exit(Sender: TObject); var C:Char; begin if Length(Edit3.Text) > 0 then begin C:=Edit3.Text[1]; case C of '+': Operat:=Pius; '-': Operat:=minus; '*': Operat:=Mult; '/': Operat:=Divide; end; end else Operat:=None; end; procedure TForm1.Button1Click(Sender: TObject); var Z:real; begin Z := 0; case Operat of Pius: Z:=a+b; Minus: Z:=a-b; Mult: Z:=a*b; Divide: if b=0 then begin Edit4.Text:='деление на 0'; Exit; end else Z:=a/b; None: begin Edit4.Text:= 'операции нет'; Exit; end; end; Edit4.Text:=FormatFloat('0.00',z); end; procedure TForm1.BitBtn1Click(Sender: TObject); begin Form1.Close; end; end. Последний раз редактировалось zadirka; 22.05.2011 в 13:39. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не могу найти ошибку | 18541 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 16.12.2010 15:53 |
не могу найти ошибку | Асик | Помощь студентам | 9 | 30.11.2010 23:10 |
не могу найти ошибку! | novi4ok_Delphi | Помощь студентам | 4 | 24.04.2010 21:46 |
Не могу найти ошибку в БД | Bilargo | Помощь студентам | 0 | 26.11.2009 14:00 |
Не могу найти ошибку. | Picaso18 | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 19.01.2009 17:05 |