AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Arbeiten mit Tobjectlist

Offene Frage von "KahPee"
Ein Thema von KahPee · begonnen am 13. Feb 2010 · letzter Beitrag vom 14. Feb 2010
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Arbeiten mit Tobjectlist

  Alt 13. Feb 2010, 23:15
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:
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;
Ansonsten nochmal zu der Frage mit den Konstruktoren. Was passiert mit
Tseite(project.pages.last).pic:=Timage.create(self) wenn ich das hier ausführe:
Tseite(project.pages.last).delete;
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#12

Re: Arbeiten mit Tobjectlist

  Alt 13. Feb 2010, 23:35
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;
Lars
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: Arbeiten mit Tobjectlist

  Alt 13. Feb 2010, 23:44
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;
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#14

Re: Arbeiten mit Tobjectlist

  Alt 13. Feb 2010, 23:48
Delphi-Quellcode:
type
  TSeiteListe=Class(TObjectList)
  private
     function GetItem(Index: Integer): TSeite;
     procedure SetItem(Index:integer;Value:TSeite);
  public
    ....
  end;
Die Methoden fehlen natürlich noch in der deklaration der klasse. Dann funktioniert es.
Lars
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Arbeiten mit Tobjectlist

  Alt 13. Feb 2010, 23:53
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;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.862 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Arbeiten mit Tobjectlist

  Alt 14. Feb 2010, 09:55
Man kann aber keine Integer nach TSeite casten
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: Arbeiten mit Tobjectlist

  Alt 14. Feb 2010, 10:02
DAs erschließt sich ja aus der Fehlermeldung. Die Frage ist wie man das Problem löst. Das muss ja schon irgendwie gehen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.862 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: Arbeiten mit Tobjectlist

  Alt 14. Feb 2010, 10:05
Lass den Cast einfach weg.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: Arbeiten mit Tobjectlist

  Alt 14. Feb 2010, 10:07
du meinst ich brauch "function TseiteList.Last: Integer; " gar nicht neu zu definieren?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.862 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: Arbeiten mit Tobjectlist

  Alt 14. Feb 2010, 10:08
Eigentlich nicht
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 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 by Thomas Breitkreuz