Mir ist in einem Delphi-Programm Quellcode folgender Art aufgefallen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1 := TStringGrid.Create(Self);
with StringGrid1 do
begin
Name := 'StringGrid1';
Parent := Self;
Left := 450;
Top := 100;
Width := 500;
Height := 300;
TabOrder := 6;
Objects[0,7] := Edit1;
Cells [0, 7] := 'Das dürfte eigentlich gar nicht gehen... ' +
IntToStr (RowCount);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
label2.Caption := StringGrid1.Cells[0,7];
end;
Nun wird aber ein StringGrid mit RowCount und ColCount = 5 erzeugt. Trotzdem liefert der Zugriff auf die 8. zeile keinen Fehler und RowCount ist immer noch 5. Fordert das StringGrid hier nun dynamisch weiteren Speicher an oder überschreibt es einfach Speicherbereiche? Letzteres wäre ja ein Boffer Overflow Problem...