Du musst wenn Du ein Array durchgehst, natürlich die Laufvariable der Schleife benutzen:
Code:
n = 10
for i:=1 to n do begin
a[1]:=1;
a[2]:=1;
a[i]:=a[i-2]+a[i-1];
z := a[i];
Panel1.Caption:=IntToStr(z);
end;
Für i ist beim ersten Durchlauf i = 1, beim zweiten Durchlauf ist i = 2.
Das Array kannst Du Dir dabei in etwa so vorstellen:
a[1] | a[2] | a[3] | a[4]
__1_|__1_ |__2__|__3 (Die Unterstriche dienen nur als Platzhalter).
Das Array ist quasi ein Karton in dem es mehrere Fächer mit den Namen 1,2,3,4 gibt. Im Fach mit dem Namen "1" liegt die 1. Im Fach mit dem Namen 4, die 3, etc..
Des Weiteren ist bei den Fibonaccizahlen fib(1) = 1 und nicht 0 wie von Dir in Deinem Code angegeben.
Zusätzlich steht die Variable der Du einen Wert zuweisen willst immer links. Die Variabel die den Wert hat, die der anderen zugewiesen werden soll demnach rechts.
Hab mal die Änderungen an Deinem Code farbig markiert.