Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi for ... in (https://www.delphipraxis.net/60542-a.html)

jfheins 8. Jan 2006 21:35


for ... in
 
Einfache Frage (wahrscheinlich) einfache Antwort, aber ich komm nicht drauf:

Warum geht diese for .. in konstrukt nicht ?
(ich wollte es zum ersten mal benutzen, also nicht hauen ^^)
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  Comp: TComponent;
begin
  for Comp in Components do
    (Comp as TWinControl).DoubleBuffered := True;
end;
Fehler: do gefunden aber [ erwartet ... :gruebel:

faux 8. Jan 2006 21:37

Re: for ... in
 
Hallo!

Ich kenne diese Form von for-Schleifen zwar nicht, aber sollte das eine Art "foreach"-Schleife sein?
Das Schlüsselwort is überprüft normalerweise, ob eine Instanz von einer Bestimmten Klasse abstammt, und liefert also einen boolean zurück.

Grüße
Faux

Matze 8. Jan 2006 21:42

Re: for ... in
 
Ich habe keine Ahnung, um ehrlich zu sein, aber müsste es nicht so in der Art gehen?

Delphi-Quellcode:
var i: integer;
  Comp: TComponent;
begin
  for i := 0 to Application.ComponentCount - 1 do
  begin
    Comp := Application.Components[i];
    if Comp is TWinControl then
      (Comp as TWinControl).DoubleBuffered := true;
  end;
end;
Aber wie gesagt, ich kenne for..in auch nicht. :duck:

Luckie 8. Jan 2006 21:47

Re: for ... in
 
Seit Delphi 2005 kennt Delphi auch das foreach Konstrukt, wie es aus PHP bekannt ist. Allerdings kenne ich davon nicht die genaue Syntax bzw. bin mir nicht sicher, ob dies nicht nur in .NET Anwendungen verfügbar ist. Mit der Suche findet man dann diesen Thread: http://www.delphipraxis.net/internal...=390667#390667 etwas weiter unten ist dann auch von foreach die Rede.

alcaeus 8. Jan 2006 21:49

Re: for ... in
 
Moin,

die Syntax ist an sich korrekt. So wie ich das sehe liegt das Problem darin, dass TForm.Components eine Array-Property ist, und somit keinen Enumerator hat, der fuer for..in aber notwaendig ist. Darin wirds wohl scheitern ;)

Greetz
alcaeus

faux 8. Jan 2006 21:50

Re: for ... in
 
In dem von Lukie verlinken Thema gehts um .NET. Also nehme ich mal an, dass foreach nur in Delphi.NET hinzugefügt wurde, da es in der CLS vorausgesetzt wird.

Grüße
Faux

alcaeus 8. Jan 2006 21:52

Re: for ... in
 
Zitat:

Zitat von faux
In dem von Lukie verlinken Thema gehts um .NET. Also nehme ich mal an, dass foreach nur in Delphi.NET hinzugefügt wurde, da es im CLS vorausgesetzt wird.

Nein, es funktioniert auch in Delphi fuer Win32, allerdings nicht in diesem einen Fall. Die erweiterten Templates fuer die DPCollection (die aus meinem Tutorial) fuehren solche Enumeratoren ein, damit man die Collection mit for..in "durchwandern" kann ;)

Greetz
alcaeus

jbg 8. Jan 2006 21:52

Re: for ... in
 
Zitat:

Zitat von faux
dass foreach nur in Delphi.NET hinzugefügt wurde

Borland hat das auch für Delphi Win32 implementiert.

jfheins 8. Jan 2006 21:57

Re: for ... in
 
Zitat:

Zitat von alcaeus
Moin,

die Syntax ist an sich korrekt. So wie ich das sehe liegt das Problem darin, dass TForm.Components eine Array-Property ist, und somit keinen Enumerator hat, der fuer for..in aber notwaendig ist. Darin wirds wohl scheitern ;)

Greetz
alcaeus

Grmp ... daran liegts ... damit wäre das wohl erledigt :roll: :cry:

alcaeus 8. Jan 2006 22:01

Re: for ... in
 
Moin,

du koenntest aber versuchen, mit class helpers einen Enumerator fuer Components in TForm reinzuboxen, das duerfte theoretisch funktionieren. ;)

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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