
18.11.2008, 16:04
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
Если по простому, то так:
Код:
type
TCalcType = (ctNone, ctA, ctB, ctC, ctD);
procedure TForm1.Button1Click(Sender: TObject);
function Convert(AStrData : String; var ARealdata : Double) : Boolean;
begin
Result := False;
If AStrData = ''
Then
Begin
Result := True;
ARealData := 0;
End
Else
ARealData := StrToFloat(AStrData);
end;
function CalcA(A,B,C,D : Double) : Double;
begin
Result := B * C / D;
end;
function CalcB(A,B,C,D : Double) : Double;
begin
Result := A * D / C;
end;
function CalcC(A,B,C,D : Double) : Double;
begin
Result := A * D / B;
end;
function CalcD(A,B,C,D : Double) : Double;
begin
Result := B * C / A;
end;
var
sA, sB, sC, sD : String;
rA, rB, rC, rD : Double;
ACalcType : TCalcType;
begin
// Инициализация
ACalcType := ctNone;
sA := Edit1.Text;
sB := Edit2.Text;
sC := Edit3.Text;
sD := Edit4.Text;
// Вычисляем расчетную переменную
If Convert(sA, rA) Then ACalcType := ctA;
If Convert(sB, rB) Then ACalcType := ctB;
If Convert(sC, rC) Then ACalcType := ctC;
If Convert(sD, rD) Then ACalcType := ctD;
Case ACalcType Of
ctNone : ShowMessage('Все переменные указаны!');
ctA :
Begin
rA := CalcA(rA,rB,rC,rD);
Edit1.Text := FloatToStr(rA);
End;
ctB :
Begin
rB := CalcB(rA,rB,rC,rD);
Edit2.Text := FloatToStr(rB);
End;
ctC :
Begin
rC := CalcC(rA,rB,rC,rD);
Edit3.Text := FloatToStr(rC);
End;
ctD :
Begin
rD := CalcD(rA,rB,rC,rD);
Edit4.Text := FloatToStr(rD);
End;
End;
end;
Здесь нет проверки данных и обработки исключений.
|