Hi,
ich habe hier einen komplizierten Fall.
Es geht um diese Stringgrid.Objects. Im Prinzip aber nur um TObject. Wenn ich diese Objects anlege, sie danach mit free freigebe, dann kommen seltsame Fehler. Und zwar daher, weil ich später nochmals auf NIL prüfe. Obwohl die Objekte mit free freigegeben wurden läuft das programm so, als wären sie zumindest nicht NIL. Ich setze sie deshalb zuerst auf NIL und dann erst rufe ich free auf und siehe an : es geht.
Kann mir das mal einer erklären ?
Dieses Verhalten ist anscheinend auch die Ursache für die Existenz von FreeAndNil.
Das hier geht :
Delphi-Quellcode:
procedure TfrmEin.FormHide(Sender: TObject);
var i,j : integer;
begin
for i := sg.FixedCols to sg.ColCount - 1 do
for j := sg.FixedRows to sg.RowCount - 1 do
if sg.Objects [i,j] <> nil then begin
sg.Objects [i,j] := nil;
sg.Objects [i,j].Free;
end;
end;
und hier :
Delphi-Quellcode:
procedure TfrmEin.FormHide(Sender: TObject);
var i,j : integer;
begin
for i := sg.FixedCols to sg.ColCount - 1 do
for j := sg.FixedRows to sg.RowCount - 1 do
if sg.Objects [i,j] <> nil then begin
FreeAndNil (sg.Objects [i,j]);
end;
end;
kommt folgender Fehler :
Zitat von
D7-Compiler:
[Fehler] ArtNrEin.pas(3118): Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden