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 ? do" Schleife (https://www.delphipraxis.net/63552-do-schleife.html)

Patrick 20. Feb 2006 15:20


"for ? in ? do" Schleife
 
Ich habe das gerade eine neue Schleife entdeckt, die ab Delphi 2005 mit drin ist. Aber ich raff die nicht. Ich kapier vorallem den Sinn dahinter nicht...
Delphi-Quellcode:
var stringarr: array of String;
  s: String;
begin
  for s in stringarr do begin
    ShowMessage(s);
end;
Sagen wir mal mein Array hat 4 Einträge:
hausdach, gartenhaus, irgendwas, haustür

mein String "s" ist "haus"

Habe ich jetzt also drei Schleifendurchgänge?

Khabarakh 20. Feb 2006 15:23

Re: "for ? in ? do" Schleife
 
Was davor in s stand, ist - wie bei allen Schleifenvariablen - völlig egal. Du bekommst vier Schleifendurchläufe, in denen s jeweils einem Element des Arrays entspricht.

Airblader 20. Feb 2006 15:32

Re: "for ? in ? do" Schleife
 
Es ist also funktionsgleich mit der PHP-Schleife foreach, oder? ;)

air

Die Muhkuh 20. Feb 2006 15:36

Re: "for ? in ? do" Schleife
 
Hi,

ich hätte auch noch ne Frage zu einer for .. in .. do Schleife, passt gerade zu dem Thema hier.

Ist eine For .. in .. do Schleife schneller, als eine For .. to .. do?

Delphi-Quellcode:
// StringArray mit 100000 variablen Einträgen
for I := 0 to 99999 do
begin

end;

for s in StringArr do
begin

end;

sakura 20. Feb 2006 15:41

Re: "for ? in ? do" Schleife
 
Zitat:

Zitat von Spider
Ist eine For .. in .. do Schleife schneller, als eine For .. to .. do?

Nein, im Zweifel sogar ein paar Takte (sehr wenige allerdings) langsamer, da hier etwas Overhead für die Enumeratorklasse, welche im Hintergrund läuft, anfällt.

...:cat:...

Die Muhkuh 20. Feb 2006 15:43

Re: "for ? in ? do" Schleife
 
Zitat:

Zitat von sakura
Zitat:

Zitat von Spider
Ist eine For .. in .. do Schleife schneller, als eine For .. to .. do?

Nein, im Zweifel sogar ein paar Takte (sehr wenige allerdings) langsamer, da hier etwas Overhead für die Enumeratorklasse, welche im Hintergrund läuft, anfällt.

...:cat:...

Hi Daniel,

danke :)

Elvis 20. Feb 2006 19:39

Re: "for ? in ? do" Schleife
 
Zitat:

Zitat von sakura
Zitat:

Zitat von Spider
Ist eine For .. in .. do Schleife schneller, als eine For .. to .. do?

Nein, im Zweifel sogar ein paar Takte (sehr wenige allerdings) langsamer, da hier etwas Overhead für die Enumeratorklasse, welche im Hintergrund läuft, anfällt.

Aber nur wenn arraybasierte Container benutzt werden.
Bei Listen ist es definitiv netter den Iterator durch die Knoten hangeln zu lasen als ob man es selbst tun müsste, es dürfte da leistungsmäßig auch nicht viel verloren gehen.

btw: Eigentlich sollte der Compiler ein for-in auf einen array komplett aufrollen können. :zwinker:


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