Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi for...in für TObjectList (https://www.delphipraxis.net/182589-fuer-tobjectlist.html)

Helmi 3. Nov 2014 15:30

Delphi-Version: XE2

for...in für TObjectList
 
Hallo,

mit
Delphi-Quellcode:
var
  c: Char;
  S: String;

begin
  S := 'hallo';
  for c in S do
    ShowMessage(c);
end;
kann man ja jedes Char eines String direkt über die for-Schleife auslesen

Ist so was auch für eine TObjectList möglich?
Also so was in etwa:
Delphi-Quellcode:
var
  ObjectList: TObjectList;
  O: TObject;

begin
  for O in ObjectList do
//
end;

Neutral General 3. Nov 2014 15:35

AW: for...in für TObjectList
 
Für generische (Objekt-)Listen schon. Bei den normalen scheinbar nicht.

Uwe Raabe 3. Nov 2014 15:41

AW: for...in für TObjectList
 
Bei den nicht-generischen Listen geht das nur mit einer Laufvariable vom Typ Pointer.

Delphi-Quellcode:
var
  ObjectList: TObjectList;
  O: Pointer;
begin
  for O in ObjectList do;
end;

Deswegen, und weil die generischen noch weitere Vorteile bieten, sollte man die alten Listen auch nicht mehr verwenden.

Sherlock 3. Nov 2014 15:45

AW: for...in für TObjectList
 
Ein kleines bisschen Typsicherheit wünscht sich das Delphi dann doch noch.

Sherlock

Helmi 3. Nov 2014 15:47

AW: for...in für TObjectList
 
ah ok - danke!
Ist ein altes Projekt (noch mit Delphi 7 begonnen), daher noch die alten Typen

Dejan Vu 3. Nov 2014 15:48

AW: for...in für TObjectList
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1278538)
Bei den nicht-generischen Listen geht das nur mit einer Laufvariable vom Typ Pointer.

Wäre bei einer TObjectList nicht 'Object' geeigneter bzw. richtig?

DeddyH 3. Nov 2014 15:55

AW: for...in für TObjectList
 
Zitat:

Zitat von Dejan Vu (Beitrag 1278541)
Zitat:

Zitat von Uwe Raabe (Beitrag 1278538)
Bei den nicht-generischen Listen geht das nur mit einer Laufvariable vom Typ Pointer.

Wäre bei einer TObjectList nicht 'Object' geeigneter bzw. richtig?

Sollte man diese Frage nicht besser dem Compilerbauer stellen?

himitsu 3. Nov 2014 16:00

AW: for...in für TObjectList
 
Wollte ich auch grade sagen.
Delphi-Quellcode:
var
  ObjectList: TObjectList;
  O: TObject; // <<<<<
begin
  for O in ObjectList do;
end;
ABER, da TObjectList von TList abgeleitet ist, welches dort Pointer hat und der Enumerator vermutlich nur in TList-Deklariert und nicht überschrieben wurde, wird es hier wohl bei Pointer bleiben.

Nee, dem, der in der Ableitung den Enumerator vergessen hat. :stupid:


Fazit: Warum haben die dort noch keinen Enumerator eingeführt?

Aber da Pointer ebenfalls mit IS und AS behandelt werden kann (wenn ich das noch richtig im Kopf hab), stört es hier nicht all zu sehr.
(und casten muß man oftmals sowieso, wo es dann egal ist ob man TObject->TMyObject oder Pointer->TMyObject machen muß)



PS: Wenn man will, kann mich sich auch selber einen Enumerator schreiben und den sogar generisch für die nichtgenerische TObjectList, wenn man es gern so mag.

DeddyH 3. Nov 2014 16:54

AW: for...in für TObjectList
 
Zitat:

Zitat von himitsu (Beitrag 1278546)
Aber da Pointer ebenfalls mit IS und AS behandelt werden kann (wenn ich das noch richtig im Kopf hab), stört es hier nicht all zu sehr.

Da bist Du hast Du das nicht richtig im Kopf :mrgreen:

Dejan Vu 3. Nov 2014 17:06

AW: for...in für TObjectList
 
Zitat:

Zitat von DeddyH (Beitrag 1278544)
Sollte man diese Frage nicht besser dem Compilerbauer stellen?

Ist der hier im Forum? [klugscheiß]Außerdem ist das der Schreiber der Klasse, der den Enumerator nicht richtig implementiert hat, nicht der Compilerbauer.[/klugscheiß]


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 Uhr.
Seite 1 von 2  1 2      

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