naja habe jetzt gedacht das die einen nur in dem forum und die anderen im anderen. Und so schneller eine Antwort bekomme.
Nö, in diesem Forum kriegst du die besten Antworten weil es das beste Delphi Forum ist.
Direkt nachdem du die Werte von der Benutzeroberfläche übernommen hast, musst du eine Plausibilitätsprüfung vornehmen:
Delphi-Quellcode:
R :=StrToFloat(Edit1.Text);
if R < 0.1
then
raise Exception.Create('
Widerstand darf nicht kleiner als 0,1 Ohm sein');
Falls du später weitere Werte errechnest, die Einfluss auf die Division haben müssen diese auch geprüft werden:
Delphi-Quellcode:
I:= (1/R) * (U-(C*n));
if Abs(I) < 0.0001
then
raise Exception.Create('
Strom kleiner als 0,1 mA');
// alternativ könntest du hier auch die Continue Anweisung verwenden um den Wert zu überspringen
Mir scheint ausserdem, dass irgendwas in deiner Berechnung falsch ist.
Evtl. die Formeln so umstellen, dass sich der Strom herauskürzt.
Oder auch so:
Delphi-Quellcode:
{Stromberechnung}
I:= (1/R) * (U-(C*n));
if Abs(I) < 0.001 then
eta:= 0.0 // Wirkstrom = 0 ==> Wirkungsgrad = 0
else
begin
{Momentberechnung}
M_i:= I * (C/2.0*Pi);
M := M_i - M_r;
{Wirkungsgradberechnung}
eta:= (M*2.0*Pi*n) / (U*I);
end;