AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Set-Type (also Menge) und for-in-Schleife
Thema durchsuchen
Ansicht
Themen-Optionen

Set-Type (also Menge) und for-in-Schleife

Ein Thema von s.h.a.r.k · begonnen am 28. Mai 2010 · letzter Beitrag vom 28. Mai 2010
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#11

Re: Set-Type (also Menge) und for-in-Schleife

  Alt 28. Mai 2010, 09:46
Zitat von himitsu:
Hier wird die For-Schleife 10 Werte liefern und nicht nur 3.
Genau genommen wird die Schleife sogar nicht dreimal sondern achtmal durchlaufen, da das Set in ein Byte passt. Man kann das sehr schön im Debugger sehen. Das heißt auch, daß die Überprüfung Variable in Set achtmal durchgeführt wird, obwohl das Set nur drei Elemente hat. Erst beim Ordinalwert 8 bricht dir Schleife ab.

Unter Performanceaspekten ist dieses Konstrukt also eher schädlich.
Uwe Raabe
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#12

Re: Set-Type (also Menge) und for-in-Schleife

  Alt 28. Mai 2010, 10:03
Schon klar, daß der Datentyp angepaßt wird,
aber dennoch wird nur von Low( ) bis High( ) durchlaufen.


Delphi-Quellcode:
TMyEnum = (
  atMapping, // Low(TMyEnum) = 0
  atVisible,
  atNotNull // Low(TMyEnum) = 2
);

TMyEnum = (
  atMapping, // Low(TMyEnum) = 0
  atVisible,
                 // hier wird die 2 bis 8 mitgezählt
  atNotNull = 9 // Low(TMyEnum) = 9
);
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#13

Re: Set-Type (also Menge) und for-in-Schleife

  Alt 28. Mai 2010, 12:00
Zitat von himitsu:
Schon klar, daß der Datentyp angepaßt wird,
aber dennoch wird nur von Low( ) bis High( ) durchlaufen.
Das gilt zwar für den inneren Teil der Schleife, aber nicht für die Schleife selbst.

Wenn du mal einen Breakpoint auf das Begin setzt, wirst du sehen, daß der Debugger insgesamt 9x anhält. Bei den ersten 3x wird der Schleifenbody durchlaufen, bei den internen Werten 3 bis 8 übersprungen. Erst der interne Wert 8 beendet dabei die for-Schleife.

Es passiert zwar immer noch das Richtige (wär ja auch noch schöner...), aber es werden überflüssige Befehle ausgeführt.
Uwe Raabe
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#14

Re: Set-Type (also Menge) und for-in-Schleife

  Alt 28. Mai 2010, 14:20
Danke Jungs Ist nun alles wesentlich klarer. Heute Nacht war auch einfach nicht mein "Tag".
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:51 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