Thema: Delphi FreeAndNil geht nicht

Einzelnen Beitrag anzeigen

Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

FreeAndNil geht nicht

  Alt 28. Jan 2005, 03:11
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
Gruß
Hansa
  Mit Zitat antworten Zitat