Hi Leute!
Hoffe bin im richtigen Forum dafür.
Habe ein für mich unlösbares Problem, was an sich gar nicht so schwer aussieht.
Hier erstmal der Code:
Delphi-Quellcode:
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm4 =
class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Edit4: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
Label5: TLabel;
Panel1: TPanel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Timer1: TTimer;
procedure FormClose(Sender: TObject;
var Action: TCloseAction);
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form4: TForm4;
dblErgeb2: double;
implementation
uses Prozentrechner, Math;
{$R *.dfm}
procedure TForm4.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Form1.TrackBar1.Position:=0;
end;
procedure TForm4.Timer1Timer(Sender: TObject);
begin
if (Edit1.Enabled=False)
xor(Edit2.Enabled=False)
xor(Edit3.Enabled=False)
xor(Edit4.Enabled=False)
then Button1.enabled:=true
else Button1.enabled:=false;
if not(Edit1.Text='
')
and not(Edit2.Text='
')
and not(Edit3.Text='
')
then begin
(Edit4.enabled:=false);
(Edit4.color:=clScrollBar);
end else begin
(Edit4.enabled:=true);
(Edit4.color:=clMenu);
if not(Edit1.Text='
')
and not(Edit2.Text='
')
and not(Edit4.Text='
')
then begin
(Edit3.enabled:=false);
(Edit3.color:=clScrollBar);
end else begin
(Edit3.enabled:=true);
(Edit3.color:=clMenu);
if not(Edit2.Text='
')
and not(Edit3.Text='
')
and not(Edit4.Text='
')
then begin
(Edit1.enabled:=false);
(Edit1.color:=clScrollBar);
end else begin
(Edit1.enabled:=true);
(Edit1.color:=clMenu);
if not(Edit1.Text='
')
and not(Edit3.Text='
')
and not(Edit4.Text='
')
then begin
(Edit2.enabled:=false);
(Edit2.color:=clScrollBar);
end else begin
(Edit2.enabled:=true);
(Edit2.color:=clMenu);
end end end end
end;
procedure TForm4.Button1Click(Sender: TObject);
var
q: double;
begin
q:=1+(StrToFloat(Edit3.text)/100);
if Edit1.Enabled=False
then begin
dblErgeb2:=StrToFloat(Edit2.Text)/(Power(q,StrToFloat(Edit4.text)));
Label7.Caption:=FloatToStr(dblErgeb2);
end;
if Edit2.Enabled=False
then begin
dblErgeb2:=StrToFloat(Edit1.Text)*(Power(q,StrToFloat(Edit4.text)));
Label7.Caption:=FloatToStr(dblErgeb2);
end;
if Edit3.Enabled=False
then begin
dblErgeb2:=Power((StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text)),1/(StrToFloat(Edit4.Text)));
Label7.Caption:=FloatToStr(dblErgeb2);
end;
if Edit4.Enabled=False
then begin
dblErgeb2:=(LN(StrToFloat(Edit2.Text))-(LN(StrToFloat(Edit1.Text))))/LN(q);
Label7.Caption:=FloatToStr(dblErgeb2);
end;
end;
end.
Sorry, dass er so lang ist (und Chaoslike), aber habe echt keine Ahnung, wo der Hund begraben liegt.
Also, jetzt mal zum Kern des Problems:
Die Form beinhaltet 4 Edits, mit denen gerechnet wird. 3 Werte kann man manuell eingeben, der Edit, der übrigbleibt, wird disabled.
Man kann also, wenn man 3 Werte hat, den 4. ausrechnen lassen. Ist btw. ein Zinseszins Programm, dass
Jahre, Startkapital, Endkapital und den Zinssatz errechnen kann (soll).
3 der Rechnungen funktionieren perfekt. Doch bei der Errechnung des Zinssatzes wird mir gesagt, dass "" kein float-Wert ist.
Jetzt stellt sich die Frage, warum ich diese Message erhalte, den es wird ja nur mit wirklich eingegeben Werten gerechnet.
Funktioniert übrigens auch nicht, wenn ich hier:
Delphi-Quellcode:
if Edit3.Enabled=False
then begin
dblErgeb2:=Power((StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text)),1/(StrToFloat(Edit4.Text)));
Label7.Caption:=FloatToStr(dblErgeb2);
end;
statt der recht komplexen Rechnung einfach 5*6 oder so etwas eingebe.
Ich hoffe Ihr versteht was ich meine und könnt mir da vielleicht helfen. Wie Ihr sicherlich seht bin ich (immer)noch Anfänger.
Greetz,D