![]() |
TObjectlist.add bei Objecten mit Parametern im create Aufruf
Hallo,
hier meine Typendeklaration:
Delphi-Quellcode:
Bei dem create Constructor von Tfeed benötige ich Parameter die dem Objekt übergeben werden sollen.TfeedType = set of (audio,video,html,none); PfeedSet = ^TfeedSet; TfeedSet = record feedType : TfeedType; itemTitle: String[125]; itemUrl : String[125]; prev,next: PfeedSet; end; Tfeed = class(TObject) feedBD: File of TfeedSet; item: TfeedSet; title:String[125]; DLPath:String[125]; itemList: PfeedSet; firstItem,lastItem:pointer; private constructor create(aDLPath:String;aFeedTitle:String); destructor free; public procedure addItem(aFeedItem:TfeedSet); procedure deleteItem(aPointer:Pointer); function findItem(aTitle:String):pointer; function getItem(aPointer:Pointer):TFeedSet; end; Wenn ich jetzt mehrere Objekte in einer ObjectList verwalten möchte, wird ja wenn ich TObjectList.add(TFeed) das Object in der Liste instantiiert. Wie kann ich der ganzen Geschichte dann Parameter mitgeben? Oder sollte ich das mit der ObjectList sein lassen und anstelle dessen ein dynamisches Array hernehmen. Brauche mal einen kleinen Denkanstoß. Grüße Klaus |
Re: TObjectlist.add bei Objecten mit Parametern im create Au
Zitat:
|
Re: TObjectlist.add bei Objecten mit Parametern im create Au
Hi!
- Die Definition von "feedBD: File Of TFeedSet" kann doch aus der Klasse raus, oder? In der Klasse willst du doch mit firstItem und LastItem auf die im Speicher vorhandenen Items zugreifen. Somit braucht diesen Filetype hier keiner. Diesen bräuchtest du nur lokal in der Lade/Speicher Methode zu deklarieren. - TfeedSet ist ein Record und kein Objekt, daher frage ich mich, wo bei dir ein Objekt instanziiert wird? - Wozu brauchst du noch itemList: PfeedSet;, wenn du mit firstItem und LastItem doch schon den Anfang und Ende der verketteten Liste hast? - Die beiden Zeiger (firstItem,lastItem:pointer;), sollten die nicht eher vom Typ PfeedSet sein anstatt untypisiert als Pointer? - Constructor und Destructor sind beide öffentlich (public). Du kannst sie nicht in eine geringere Sichtbarkeitsebene verschieben (private), daher musst du sie dort rausnehmen. Wenn die beiden Methoden private wären, dann könntest du ja niemals von aussen eine Klasse instanziieren oder freigeben. Zitat:
Zitat:
|
Re: TObjectlist.add bei Objecten mit Parametern im create Au
Auch wenn jetzt schon andere vor mir geantwortet haben:
Zitat:
Delphi-Quellcode:
Zur Objektliste hinzufügen kann man es dann so:
MeineFeedVariable := TFeed.Create(Die Parameter...);
Delphi-Quellcode:
ObjectList.Add(MeineFeedVariable);
Zitat:
Nebenbei: Den Destruktor Deiner TFeed-Klasse solltest Du lieber Destroy nennen, sonst verdeckt er die Free-Methode. Und die sollte man aufrufen, wenn man das Objekt freigeben will, nicht den Destruktor direkt. |
Re: TObjectlist.add bei Objecten mit Parametern im create Au
Hallo Thomas,
danke für die schnelle Antwort: Zitat:
feedDB ist eine Datei die ich bei der Erstellung des Object einlesen und daraus eine verkettet Liste machen will. firstItem und lastItem beinhalten die Adresse des ersten und letzten Elements der verketten Liste. Zitat:
Zitat:
Zitat:
Zitat:
Grüße Klaus |
Re: TObjectlist.add bei Objecten mit Parametern im create Au
Hallo Thorben,
danke für Deinen Beitrag. Zitat:
Zitat:
Das konntest Du aber nicht wissen. Grüße Klaus |
Re: TObjectlist.add bei Objecten mit Parametern im create Au
Zitat:
Zitat:
Zitat:
|
Re: TObjectlist.add bei Objecten mit Parametern im create Au
Zitat:
|
Re: TObjectlist.add bei Objecten mit Parametern im create Au
Zitat:
Das hilft mir ein gutes Stück weiter. Grüße Klaus |
Re: TObjectlist.add bei Objecten mit Parametern im create Au
Zitat:
Zitat:
Es ist üblich, den Destruktor destroy zu nennen, denn wenn man ihn Free nennt, verdeckt er die Free-Methode. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 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