![]() |
For - In-Schleife und TInterfaceList
Hi,
ich hab eine Klasse, die von TInterfaceList abgeleitet wird. Laut Delphi-Hilfe kann ich die For - In-Schleif mit der TInterfaceList nutzen. Nur wie?
Delphi-Quellcode:
Bei [1] spuckt mir der Compiler folgende Fehlermeldung aus:
TMyClass = class(TInterfaceList)
private function GetItem(Index: Integer): IMyInterface; function GetItemByName(Name: String): IMyInterface; public property Items[Index: Integer]: IMyInterface read GetItem; default; property ItemsByName[Name: String]: IMyInterface read GetItemByName; end; function TMyClass.GetItemByName(Name: String): IMyInterface; var MyI: IMyInterface; begin for MyI in Items do // [1] begin if MyI.GetName = Name then begin Result := MyI; Exit; end; end; end; Zitat:
|
Re: For - In-Schleife und TInterfaceList
for-in ist in native Delphi furchtbar implementiert, Du musst dir praktisch für jeden Itemtypen eine neue Liste mit neuem Enumerator bauen.
Du kannst nämlich keinen Typen für das Item nehmen, der nicht direkt zuweisungskompatibel ist. *bummer* Du musst also eintweder eine Variable vom Typen IInterface nehmen für for-in und dann damit deine besetzen, ider du nimmst das alte, hässliche for-to, oder du schaust dir DLangExtensions an. Andy hat es hingekriegt, dass man sein for-in sinnvoll benutzen kann. |
Re: For - In-Schleife und TInterfaceList
Hi Elvis,
das ist natürlich sch... Dann werd ich beim alten For-To bleiben. Für die zweimal die, die ich die For-In brauche, lohnt es sich nicht einen Enumerator zu schreiben. |
Re: For - In-Schleife und TInterfaceList
Hallo,
übrigens darf es nicht
Delphi-Quellcode:
heißen, sondern
for MyI in Items do
Delphi-Quellcode:
Du willst ja durch die Liste iterieren, und nicht durch die Eigenschaft (den Zugriff auf die Eigenschaft erledigt dann der Enumerator).
for MyI in Self do
Gruß xaromz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 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