Hallo liebe Community,
ich hoffe ihr könnt mir etwas auf die Sprünge helfen, deswegen hier direkt mein Problem:
Programm ist ein Taschenrechner.
Das Problem dreht sich um die Memory Funktion. Falls jemand damit nichts anfangen kann:
MR Taste : Übergibt aktuellen Display Wert an Speicher
MC Taste : Setzt Speicher + Display Wert auf 0
M+ Taste : Addiert Speicher Wert zu aktuellem Display Wert
M- Taste : Subtrahiert Speicher Wert von aktuellem Display Wert
Mein Code:
Code:
procedure TForm1.MemoryFunction(Sender: TObject);
var mem: ansistring;
begin
if Sender is TSpeedButton then
case TSpeedButton(Sender).Name of
'TsbMR': mem := label1.Caption;
'TsbMC': begin
mem := '0';
label1.Caption := '0';
end;
'TsbMMinus': label1.Caption := FloatToStr(StrToFloat(label1.Caption) - StrToFloat(mem));
'TsbMPlus': label1.Caption := FloatToStr(StrToFloat(label1.Caption) + StrToFloat(mem));
end;
end;
Mein Problem besteht in der Übergabe des Display Wert an den Speicher Wert. Es wird kein String übergeben.
Beim Drücken von M+ und M- kommt
Exception EConvertError: "" is an invalid float.
Wenn ich mem einen festen Wert z.B mem := '5' zuordne, funktioniert alles ohne Probleme (ausser natürlich die Taste MR zum Setzen des Speicher Werts).
(Zeichen werden übrigens auch als ansistring an label1.Caption übergeben, falls das irgendeine Rolle spielen könnte.)
Hat jemand von euch zufällig eine Idee bzw. kann mir sagen, wo ich dumm war?
Vielen Dank für eure Aufmerksamkeit!