Problem beim schreiben einer Listenklasse
Also ich stehe vor folgendem Problem, ich möchte eine Klasse schreiben, ähnlich der TStrings.
Ich möchte z.B. folgendes machen können.
Delphi-Quellcode:
Ich hoffe man sieht, was ich machen möchte. Kann mir jemand sagen, wie ich dabai vorgehen muss.
...
var Files: TFiles; begin ... Files.Add(Filename); Files[0].Test('blablabla'); end; |
Re: Problem beim schreiben einer Listenklasse
Du musst deine Listenklasse von TList oder besser noch von TObjectList ableiten.
Dann braucht du noch eine Klasse für die Einzelobjekte:
Delphi-Quellcode:
TFileObj=class(TPersistent)
public procedure Test(const s:string); end; |
Re: Problem beim schreiben einer Listenklasse
Für Liste kannst du am einfachsten die Klasse TObjectList nehmen.
Zitat:
TObjectList kann beliebige Objekte aufnehmen. Über Files[0] implizierst du jedoch bereits ein korrektes Casting. Das geht so nicht, aber folgendes wäre möglich, sofern eine TFile Klasse bekannt ist, und auch wirklich nur TFile Objekte in deiner Liste sind:
Delphi-Quellcode:
Wenn du das Ganze typsicher machen willst, dann kannst du auch TCollection und TCollectionItem verwenden.
TFile(Files[0]9.Test('bla') ;
|
Re: Problem beim schreiben einer Listenklasse
Ist das Problem so dringend dass Du es zweimal postest ?
|
Re: Problem beim schreiben einer Listenklasse
Zitat:
|
Re: Problem beim schreiben einer Listenklasse
Jelly:
Delphi-Quellcode:
Besser, und zumindest zur Laufzeit, typensicher ist :
TFile(Files[0]9.Test('bla') ;
Delphi-Quellcode:
PMM
(Files[0] as TFile).test('BlaBla');
|
Re: Problem beim schreiben einer Listenklasse
Wieso Typsicherheit erst zur Laufzeit und nicht schon zur Compilierzeit?
Delphi-Quellcode:
Dadurch dass TFileList.Add() nur Objekte vom Typ TFile akzeptiert, kann man sich den geprüften Cast in TFileList.GetItem() sparen.
type
TFile = class(TObject) // ... end; TFileList = class(TObject) private FItems: TObjectList; function GetItem(const Index: Integer): TFile; public constructor Create(const OwnsObjects: Boolean = True); destructor Destroy; override; function Add(const F: TFile): Integer; property Items[const Index: Integer]: TFile read GetItem; default; end; constructor TFileList.Create(const OwnsObjects: Boolean = True); begin inherited Create; FItems := TObjectList.Create(OwnsObjects); end; destructor TFileList.Destroy; begin FItems.Free; inherited Destroy; end; function TFileList.Add(const F: TFile): Integer; begin FItems.Add(F); end; function TFileList.GetItem(const Index: Integer): TFile; begin Result := TFile(FItems[Index]); end; jkr |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz