Ich glaube, 2-dimensionale Arrays bieten sich für dein Fall überhaupt nicht an. Das, was du versuchst im Speicher abzubilden, nennt sich eine Datenliste.
Delphi-Quellcode:
Cells[0,0]:='Jahr';
Cells[1,0]:='Anfang';
Cells[2,0]:='Zinsen';
Cells[3,0]:='Ende';
Deine Anzahl der Spalten ist fest, die der Zeilen variabel.
Stell dir vor, du hast 30 Spalten zu verwalten, oder es kommt einfach morgen eine dazu. Weisst Du dann noch genau, dass Spalte 2 die Zinsen beinhaltet. Was, wenn du eine Spalte hast, die kein Float ist, sondern z.B. einen String beinhaltet, oder ein Boolean, oder auf irgendein anderes Objekt verweist.
Erstell dir eine Klasse (oder von mir auch gern ein Record, wenns keine Funktionalität braucht):
Delphi-Quellcode:
TZinsen = class
public
Anfang, Ende : TDateTime ;
Zinsen : double ;
end ;
Dazu eine TObjectList (irgendwie ist die heut bei mir sehr beliebt), die du in deiner Form im public Teil definierst:
Delphi-Quellcode:
TForm1 = class (TForm)
...
public
ZinsenList : TObjectList ;
end ;
Kommt eine Zinsenzeile dazu, dann geht das so:
Delphi-Quellcode:
procedure TForm1.NeuerZinssatz ;
var
Zinsen : TZinsen ;
begin
Zinsen := TZinsen.Create ;
Zinsen.Anfange := now ;
Zinsen.Ende := EncodeDate (2007,12,31) ;
Zinsen.Zinsen := 8.15 ;
ZinsenListe.Add (Zinsen) ;
end ;
Die Klasse hat übrigens den Vorteil gegenüber einem einfachen Record, dass du auch direkt innerhalb der Klasse Berechnungen ausführen kannst, die nur das aktuelle Objekt betreffen.
ObjectListen sind einfach zu durchlaufen, zu zählen, und auch nachher wieder freizugeben, denn die enthaltenen Objekte von TZinsen werden gleich mit freigegeben.