![]() |
TStringGrid - Zugriff auf Zellen jenseits von ColCount
Mir ist in einem Delphi-Programm Quellcode folgender Art aufgefallen:
Delphi-Quellcode:
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...
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; |
Re: TStringGrid - Zugriff auf Zellen jenseits von ColCount
Guck doch einfach nach...
*schnell mal selber nachguckt* Nee, kein Bug. Speicher wird dynamisch neu angefordert... mfg Christian |
Re: TStringGrid - Zugriff auf Zellen jenseits von ColCount
Hallo Rainer,
einen buffer overflow musst du hier wirklich nicht fürchten. Borland arbeitet beim StringGrid mit einer sparse matrix Implementierung - wie allgemein üblich. ColCount und RowCount definieren lediglich ein Fenster auf dieser Matrix. Du kannst die Fensterkoordinaten in deinem eigenen Code zur Prüfung verwenden. Freundliche Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz