Um schnell und sicher die Eingabe eines TEdit Feldes auszuwerten kann man folgende Methoden zentral ablegen und global verwenden. Es wird dafür gesorgt, dass nur gültige Integer bzw. Float Werte akzeptiert werden. Die Methoden liefern True zurück, wenn die Eingabe gültig ist. In Value wird das Ergebnis geschrieben, falls die Umwandlung erfolgreich war. Falls ein Fehler auftritt wird eine Warnung angezeigt und der Rückgabe Wert ist False.
function ReadFloatFromEdit( var value : double; Edit : TEdit ) : boolean;
begin
Result := True;
try
value := StrToFloat( Edit.Text );
except
Result := False;
MessageDlg( '"' + Edit.Text + '" ist keine gültige Eingabe.', mtWarning, [ mbOK ], 0 );
end;
end;
function ReadIntFromEdit( var value : integer; Edit : TEdit ) : boolean;
begin
Result := True;
try
value := StrToInt( Edit.Text );
except
Result := False;
MessageDlg( '"' + Edit.Text + '" ist keine gültige Eingabe.', mtWarning, [ mbOK ], 0 );
end;
end;
Ein Beispiel Aufruf könnte folgendermaßen aussehen:
...
var
tolerance : double;
begin
if not ReadFloatFromEdit( tolerance, Edit1 ) then Exit;
...
Hier der Scilab Code zum plotten von Exponentiellen Wachstums- bzw. Zerfallsprozessen [y=x0*e^(x*a)] mit der dazugehörigen Trajektorie.
clf;
// Anfangsparameter
x0 = -4;
a = -0.05;
// Beschriftung
labelStr = "(a=" + string(a) + " x0=" + string(x0) + ")";
// x(t)
y=x0*%e^(x*a);
// x'(t)
ydot = x0*a*%e^(x*a);
// oberer graph, x(t) gegen t
subplot(2,1,1);
plot(x, y );
set( gca(),"grid",[1 1]);
xtitle( "Zeitverlauf " + labelStr, "t", "x(t)");
// unterer graph, x(t) gegen x'(t)
subplot(2,1,2);
plot(y, ydot );
set( gca(),"grid",[1 1]);
xtitle( "Trajektorie " + labelStr, "x(t)", "x''(t)" );