Denk dir folgende zwei Zeilen hinzu und überleg dir nochmal, was dein Programm wirklich macht, mit so einer lokalen Variable.
Delphi-Quellcode:
procedure TForm1.MemoryFunction(Sender: TObject);
var mem: String;
begin
mem := ''; // <<<<<<<<<< die LOKALE Variable ist zu Beginn leer
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;
mem := ''; // <<<<<<<<<< die LOKALE Variable wird am Ende der Prozedur gelöscht
end;
[edit]
Ich glaube ich hätte zwischendurch mal F5 drücken sollen, wenn die
DP schon keine RedBox anzeigt.