Thema: Delphi Object.Free

Einzelnen Beitrag anzeigen

Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
946 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Object.Free

  Alt 14. Dez 2004, 17:11
Hallo,

abhängig von einem Suchbegriff wird ein Objekt in einer Liste gespeichert.

Delphi-Quellcode:
  if POS('DISK', DStr) <> 0 then Result := TIDEDrive.Create(DeviceID)
  else
  if POS('CDROM', DStr) <> 0 then Result := TCDROMDrive.Create(DeviceID)
  else Result := nil;
Sowohl TIDEDrive als auch TCDROMDrive sind beide von TObject abgeleitet.
Result wird, wie geschrieben in eine Liste vom Typ TList gespeichert;
Beim Freigeben kommt es jedoch zur ZV, da ich nicht weiss hinter welchen
Eintrag sich welches Objekt verbirgt.

Delphi-Quellcode:
destructor TxxxXXXXX.Destroy;
var
  I : Integer;
begin
  for I := FList.Count -1 downto 0 do
  begin
    TObject(FList.Items[I]^).Free;
    FList.Delete(I);
  end;
  FList.Free;
  inherited Destroy;
end;
Auch der is-operator hilft nicht weiter. Muss ich die Zuweisung anders gestallten, so in der Art

Result := Ptr(TIDEDrive.Create(DeviceID)) ???

Bin für jede Antwort dankbar.
  Mit Zitat antworten Zitat