Neben den vielen (Design-)Fehlern ist der eklatanteste und hier verantwortliche Fehler das fehlende Wissen um die zeitliche Abfolge einer Zuweisung.
Delphi-Quellcode:
procedure TForm1.AddClick(Sender: TObject);
begin
Pats[a] := TPat.Create(a);
end;
constructor TPat.Create(i: Integer);
begin
Inc(a);
index := i;
...
end;
Bei einer Zuweisung wird erst der rechte Ausdruck ausgewertet und danach erfolgt die Zuweisung ...
Somit ist a bei der ersten Zuweisung nicht - wie angenommen - 0 sondern schon 1
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)