Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

TObjectList: AV wenn OwnsObject := True

  Alt 22. Jan 2007, 12:39
Ich habe eine Klasse von TPObjectList abgeleitet, um dort "Seiten" zuverwalten. Jede Seite ist ein Objekt. Die Klasse sieht wie folft aus:
Delphi-Quellcode:
type
  TPageCollection = class(TObjectList)
  private
    function Get(Index: Integer): TImageEnVect;
  public
    Constructor Create;
    procedure Add(Item: TImageEnVect);
    procedure Insert(Index: Integer; Item: TImageEnVect);
    procedure Update(Index: Integer; Item: TImageEnVect);
    property Items[Index: Integer]: TImageEnVect read Get;
    function FindItemByName(Name: String): Integer;
  end;

implementation

  { TPageCollection }

constructor TPageCollection.Create;
begin
  inherited;
  Self.OwnsObjects := True;
end;

...
Setze ich nun OwnsObjects auf True und fü+ge mehr als ein Objekt der Liste hinzu, kommt es zu einer AccessViolation, wenn die Liste bei Programmende freigegeben wird:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  PageCollection := TPageCollection.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FreeAndNil(PageCollection);
end;
Was läuft da falsch?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat