Oh ja, da ist ein Fehler drin.
Der
ASCII-Wert von 0 ist ja nicht 0 sondern 48, da muss nochmal gerechnet werden.
War wohl ein von mir etwas unüberlegter Schnellschuss
Nächster Versuch:
Delphi-Quellcode:
procedure TForm1.TsbClick(Sender: TObject);
begin
if Sender
is TSpeedButton
then begin
// Wir nutzen für die Ziffer das Tag-Attribut der Buttons.
// Button für die 1 erhält Tag := 1;
// ...
// Button für die 9 erhält Tag := 9;
// Button für die 0 erhält Tag := 0;
// Tag kann man im Objektinspektor entsprechend zuweisen.
// Die ASCII-Werte von 0 bis 9 sind 48 bis 57.
// Chr(48) wäre also '0'
// Chr(57) wäre '9'
// Man könnte dem Button für die 0 als Tag auch 48 zuweisen,
// dem Button für die 1 als Tag 49
// ...
// bis zum Button für die 9 als Tag 57
zeichen := Chr(TSpeedButton(Sender).Tag + 48);
end;
if math_op
then begin
math_op := false;
zeichenkette := zeichen;
end
else zeichenkette := zeichenkette + zeichen;
label1.Caption := zeichenkette;
end;
Hoffentlich ist das jetzt besser.