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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2012, 18:51   #1
ferus1337
 
Регистрация: 14.06.2011
Сообщений: 5
По умолчанию проблема с onchange

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

Код моей программы:
Проблема заключается в том, что нужно предусмотреть деление на нуль.Объясните пожалуйста как можно это сделать.



[SPOILER=КОД]unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure Edit2Change(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit1Change(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
a,b:boolean;
implementation

{$R *.dfm}

procedure TForm1.Edit1Change(Sender: TObject);
begin
if b or a and(edit3.text<>'0') and(edit2.text<>'0')then begin
edit2.text:= inttostr((strtoint(edit1.text)div(s trtoint(edit3.text))));
edit3.text:=inttostr((strtoint(edit 1.Text))div(strtoint(edit2.text))) ;
edit4.text:=inttostr((strtoint(edit 1.text))mod(strtoint(edit2.text)));

end; end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
a:=false;
end;

procedure TForm1.Edit2Change(Sender: TObject);
begin
if (edit2.text<>'0')and a then begin

edit3.text:=inttostr((strtoint(edit 1.Text))div(strtoint(edit2.text))) ;
edit4.text:=inttostr((strtoint(edit 1.text))mod(strtoint(edit2.text)));
end;
end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
a:=true;

end;

procedure TForm1.Edit3Change(Sender: TObject);
begin
//b:=false;
if b then begin

edit1.Text:=inttostr((strtoint(edit 2.text))*(strtoint(edit3.text)));
edit4.text:= inttostr((strtoint(edit1.text))mod( strtoint(edit2.text)));
end; end;

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
b:=true;
end;

end.[/SPOILER]

Последний раз редактировалось ferus1337; 19.01.2012 в 18:55. Причина: spoiler
ferus1337 вне форума Ответить с цитированием
Старый 19.01.2012, 18:57   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Тогда проверяйте не "edit3.text<>'0'", a "StrToInt(edit3.text) <> 0", иначе программа споткнется, например, на тексте "00" в edit3.
Это для всех edit'ок

С проверкой корректности введенных данных (если пользователь введет не цифру, а букву) сами справитесь?
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 19.01.2012, 19:12   #3
ferus1337
 
Регистрация: 14.06.2011
Сообщений: 5
По умолчанию

Спасибо за ответ.Но проблема немного не в том.И в принципе не важен запрет недопустимых символов.Проблема в том,что не при пересчете может получиться так, что программа будет выполнять действие делимое делить на делитель.И совпадет так,что делимое меньше,чем делитель,т.е частное получится 0 целых,но также после этого следует операция поиска делителя путем деления делимого на частное,а частное у нас с предыдущей операции-нуль и выдает ошибку division by zero.Тут както через try except нужно,то ли переделать работу булиевских переменных.Но я вообще уже так запутался и не могу сообразить.
ferus1337 вне форума Ответить с цитированием
Старый 19.01.2012, 20:53   #4
ferus1337
 
Регистрация: 14.06.2011
Сообщений: 5
По умолчанию

Помогите пожалуйста
ferus1337 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие OnChange bboyb-rock JavaScript, Ajax 0 18.04.2011 00:07
OnChange Plohoy Помощь студентам 17 06.08.2010 13:07
Проблема с событием OnChange компонента DriveComboBox (C++Builder 6) Teor C++ Builder 4 15.07.2010 21:58
Проблема ONCHANGE в IE mihali4 JavaScript, Ajax 11 25.11.2008 07:15
TEdit.Onchange azat Компоненты Delphi 1 27.11.2007 12:36