Вы очень близко.
Когда вы нажимаете кнопку Next
, вы правильно вычисляете следующее значение в последовательности: iTerm1 + iTerm2
. Вы помещаете это в iTerm3
.
И в следующий раз, когда вы нажмете кнопку Next
, вы захотите использовать iTerm2
в качестве первого члена и это значение iTerm3
в качестве второго. Поэтому убедитесь, что это произойдет:
// For the next iteration:
iTerm1 := iTerm2;
iTerm2 := iTerm3;
Следовательно,
procedure TfrmFibonacciSequence.btnNextTermClick(Sender: TObject);
var
iTerm3: Integer;
begin
iTerm3 := iTerm1 + iTerm2;
memOutput.Text := IntToStr(iTerm3); // or iTerm3.ToString in modern Delphi
// For the next iteration:
iTerm1 := iTerm2;
iTerm2 := iTerm3;
// Maybe you also want to put iTerm1 and iTerm2 in the input edit boxes.
end;
Кроме того, я бы рекомендовал вам разрешить вашим переменным быть членами вашего класса формы. Потому что в противном случае, если вы создадите два или более экземпляра этого класса формы, произойдут очень плохо.
Обновление
Дополнительные пояснения:
В настоящее время ваши iTerm1
и iTerm2
являются глобальными переменными, поэтому, если вы создадите два или более экземпляра TfrmFibonacciSequence
, они будут совместно использовать эти переменные и, следовательно, не смогут работать независимо. Это будет очень запутанно. Поэтому удалите эти глобальные переменные и вместо этого добавьте iTerm1, iTerm2: Integer
в свой класс формы.
type
TfrmFibonacciSequence = class(TForm)
edtFirst: TEdit;
edtSecond: TEdit;
btnRead: TButton;
btnNext: TButton;
memOutput: TMemo;
procedure btnReadClick(Sender: TObject);
procedure btnNextClick(Sender: TObject);
private
iTerm1, iTerm2: Integer;
public
end;
Таким образом, каждый экземпляр класса будет иметь свои собственные переменные.