|
Вопрос # 2 325/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Помогите решить ряд проблем:
1.Программа работает но хотелось бы её обезопасить от ошибочного ввода данных добавив условие, но почему то else подсвечивает.
2.Присваивая тип данных x1,x2,x3,x4:real; не хочет считать, только если вводишь целые числа.
Помогите если есть ошибки укажите где и почему, чтоб в дальнейшем их избегать.
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
Приложение: Переключить в обычный режим-
-
-
-
- ----------------------------------
- unit MainUnit;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
-
- type
- TMainForm = class(TForm)
- ABLabel: TLabel;
- X1Edit: TEdit;
- Y1Edit: TEdit;
- X2Edit: TEdit;
- Y2Edit: TEdit;
- BDLabel: TLabel;
- X3Edit: TEdit;
- Y3Edit: TEdit;
- X4Edit: TEdit;
- Y4Edit: TEdit;
- ClearButton: TButton;
- CalkButton: TButton;
- ResultEdit: TEdit;
- Label1: TLabel;
-
-
- procedure ClearButtonClick(Sender: TObject);
- procedure ClearEdit(Sender: TObject);
- procedure CalkButtonClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- MainForm: TMainForm;
-
- implementation
-
- {$R *.dfm}
-
- procedure TMainForm.ClearButtonClick(Sender: TObject);
- begin
- X1Edit.Clear;
- X2Edit.Clear;
- X3Edit.Clear;
- X4Edit.Clear;
- Y1Edit.Clear;
- Y2Edit.Clear;
- Y3Edit.Clear;
- Y4Edit.Clear;
- ResultEdit.Clear;
- end;
-
- procedure TMainForm.ClearEdit(Sender: TObject);
- begin
- X1Edit.Clear;
- X2Edit.Clear;
- X3Edit.Clear;
- X4Edit.Clear;
- Y1Edit.Clear;
- Y2Edit.Clear;
- Y3Edit.Clear;
- Y4Edit.Clear;
- ResultEdit.Clear;
- end;
-
- procedure TMainForm.CalkButtonClick(Sender: TObject);
- var
- x1,x2,x3,x4:integer;
- y1,y2,y3,y4:integer;
- AB,BC,DC:integer;
- sum:real;
- begin
- try
- x1:=StrToInt(X1Edit.Text);
- y1:=StrToInt(Y1Edit.Text);
- x2:=StrToInt(X2Edit.Text);
- y2:=StrToInt(Y2Edit.Text);
- x3:=StrToInt(X3Edit.Text);
- y3:=StrToInt(Y3Edit.Text);
- x4:=StrToInt(X4Edit.Text);
- y4:=StrToInt(Y4Edit.Text);
-
- AB:=((x2-x1)+(y2-y1));
- BC:=((x3-x2)+(y3-y2));
- DC:=((x3-x4)+(y3-y4));
-
- if AB=DC then
-
- sum:=AB+BC;
- ResultEdit.Text:=FloatTostr(sum);
-
- else
-
-
- except
-
- end;
- end;
- end.
 |
Вопрос задал: ubyou (статус: Посетитель)
Вопрос отправлен: 20 января 2009, 23:05
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Паровоз
Здравствуйте, ubyou!
1) Перед else Точка с запятой не ставится. Вам нужно объединить два оператора
sum:=AB+BC;
ResultEdit.Text:=FloatTostr(sum);
заключив их в блок begin/end
2) Переменные x1,x2,x3,x4 у Вас объявлены как целочисленные, поэтому и не считывается. Поменяйте их тип на Extended.
 |
Ответ отправил: Паровоз (статус: 10-ый класс)
Время отправки: 20 января 2009, 23:28
Оценка за ответ: 4
Комментарий к оценке: Спасибо! теперь условие работает, но вот с данными все та же проблема при вводе дробных координат A(1,5;1,5) B(1,5;10) C(6;10) D(6;1,5)
|
Ответ #2. Отвечает эксперт: Мережников Андрей
Здравствуйте, ubyou!
Измените StrToInt на StrToFloat.
 |
Ответ отправил: Мережников Андрей (статус: Абитуриент)
Время отправки: 21 января 2009, 06:05
Оценка за ответ: 4
Комментарий к оценке: Спасибо работает!
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 21 января 2009, 06:08; участников в обсуждении: 1.
|
Мережников Андрей (статус: Абитуриент), 21 января 2009, 06:08 [#1]:
и измените тип AB,BC,DC на real
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|