![]() |
Re: Arbeiten mit Tobjectlist
mh.. das hat leider bei mir keine Glühbirne aufleuchten lassen :(
Was genau machen die einzelnen Zeilen? Die ändern doch eigentlich nichts außer, dass es jetzt nicht mehr jedes beliebige Objekt sein kann, welches in der Liste gespeichert werden kann, sondern nur noch objekte des typs Tseite. Gibt mir das die Möglichkeit so auf die Objekte der Liste zuzugreifen wie ich das vorhatte? project.pages.Items[index].save.... Das übernehmen deines Beispiels gibt auf jeden Fall erstmal nur Fehler. Ich hab auch keine Ahnung (:() wie ich die einzelnen Prozeduren deklarieren soll, die in TSeiteList deklariert werden...
Delphi-Quellcode:
Ansonsten nochmal zu der Frage mit den Konstruktoren. Was passiert mit
TseiteList = class(TObjectList)
public function Add(AObject: TSeite): Integer; function First: TSeite; function Last: TSeite; property Items[Index: Integer]: TSeite read GetItem write SetItem; default; end;
Delphi-Quellcode:
wenn ich das hier ausführe:
Tseite(project.pages.last).pic:=Timage.create(self)
Delphi-Quellcode:
Tseite(project.pages.last).delete;
|
Re: Arbeiten mit Tobjectlist
Ja, so kannst du machen was du machen möchtest.
So ersparst du dir das ganze rumcasten außerhalb der Objectliste. So würden die implementierungen sein:
Delphi-Quellcode:
{ TMyList }
function TMyList.Add(AObject: TMeinObject): Integer; begin result:=inherited Add(AObject); end; function TMyList.First: TMeinObject; begin result:=TMeinObject(Inherited First); end; function TMyList.GetItem(Index: Integer): TMeinObject; begin result:=TMeinObject(inherited items[index]); end; function TMyList.Last: TMeinObject; begin result:=TMeinObject(inherited Last); end; procedure TMyList.SetItem(Index: Integer; const Value: TMeinObject); begin inherited Items[index]:=Value; end; |
Re: Arbeiten mit Tobjectlist
Vielen Dank, auf den ersten Blick leuchten mir einige Dinge ein. Angepasst hab ich das mal ins projekt gepackt und leider gibt es recht viele Fehlermeldungen (stehen als kommentare dabei):
Delphi-Quellcode:
TseiteList = class(TObjectList)
public function Add(AObject: TSeite): Integer; function First: TSeite; function Last: TSeite; property Items[Index: Integer]: TSeite read GetItem write SetItem; default; //fehler mit inkompatiblen typen end; function TseiteList.Add(AObject: TSeite): Integer; begin result:=inherited Add(AObject); end; function TseiteList.First: TSeite; begin result:=TSeite(Inherited First); end; function TseiteList.GetItem(Index: Integer): TSeite; //Fehler: undefinierter bezeichner begin result:=TSeite (inherited items[index]); //Result undefiniert (bei ner Funktion, was will der den da?????) //Fehler: Diese Form des Methodenaufrufs ist nur in Methoden von abgeleiteten Typen erlaubt //[Pascal Fehler]: 'ENDE' erwartet, aber ')' gefunden end; function TseiteList.Last: TSeite; begin result:=TSeite(inherited Last); end; procedure TseiteList.SetItem(Index: Integer; const Value: TSeite); //undef. bezeichner Setitem begin inherited Items[index]:=Value;{ [Pascal Fehler] : '=' erwartet, aber ')' gefunden [Pascal Fehler] : Diese Form des Methodenaufrufs ist nur in Methoden von abgeleiteten Typen erlaubt} end; |
Re: Arbeiten mit Tobjectlist
Delphi-Quellcode:
Die Methoden fehlen natürlich noch in der deklaration der klasse. Dann funktioniert es.
type
TSeiteListe=Class(TObjectList) private function GetItem(Index: Integer): TSeite; procedure SetItem(Index:integer;Value:TSeite); public .... end; |
Re: Arbeiten mit Tobjectlist
Wie sehen dann denn die neuen Aufrufe auf?
Delphi-Quellcode:
project.Pages.Add(Tseite.create); // so noch richtig?
project.Pages.Items[pages.last].pic:=TImage.create; //[Pascal Fehler] Inkompatible Typen: 'Integer' und 'Tseite' //bezieht sich auf das "Items[pages.last]" Die Prozeduren Last und Fist müssten doch eig. einen Integer als ergebnis haben oder?!
Delphi-Quellcode:
function TseiteList.Last: Integer; //Deklaration in der Klasse ebenfalls angepasst
begin result:=TSeite(inherited Last); //<-- hier besteht weiterhin die Inkompabilität zwischen Tseite und Integer end; |
Re: Arbeiten mit Tobjectlist
Man kann aber keine Integer nach TSeite casten
|
Re: Arbeiten mit Tobjectlist
DAs erschließt sich ja aus der Fehlermeldung. Die Frage ist wie man das Problem löst. Das muss ja schon irgendwie gehen ;)
|
Re: Arbeiten mit Tobjectlist
Lass den Cast einfach weg. :zwinker:
|
Re: Arbeiten mit Tobjectlist
du meinst ich brauch "function TseiteList.Last: Integer; " gar nicht neu zu definieren?
|
Re: Arbeiten mit Tobjectlist
Eigentlich nicht
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:39 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-2025 by Thomas Breitkreuz