![]() |
Optimierung: Vereinfachte IF/OR-Abfrage bei Integer
Hallo Leute,
vielleicht kann mir jemand sagen, wie ich am schönsten den Wert eines Integers überprüfen kann. BIsher tue ich das so:
Code:
if (iTyp = 3) OR (iTyp = 5) OR (iTyp = 6) then begin
end; Gibt es für diesen Fall eine schönere Methode, als ORs aneinanderzureihen? |
Re: Optimierung: Vereinfachte IF/OR-Abfrage bei Integer
Delphi-Quellcode:
if iTyp in [3, 5, 6] then
|
Re: Optimierung: Vereinfachte IF/OR-Abfrage bei Integer
Delphi-Quellcode:
if ityp in [3,5,6] then
... |
Re: Optimierung: Vereinfachte IF/OR-Abfrage bei Integer
Delphi-Quellcode:
edit: etwas langsam... würd trotzdem case benutzen, scheint mir etwas optimaler als Zahlen erst in ein set zu verwandeln (das zudem auf byte-Größe beschränkt ist... da muss man aufpassen, wenn man ganze Bereiche definiert, etwa "in [1..1000]" ;) ).
if iTyp in [3,5,6] then begin
end; case iTyp of 3,5,6: begin end; end; |
Re: Optimierung: Vereinfachte IF/OR-Abfrage bei Integer
Falsch. Sets sind auf 32 Bit beschränkt, also maximal 32 Elemente. Und da beschwert sich dann eh der Compiler. Außerdem kann ich mir kaum vorstellen, dass der Compiler so dumm ist und ein Set weniger gut optimiert als ein case.
|
Re: Optimierung: Vereinfachte IF/OR-Abfrage bei Integer
Wow ... das ging ja schnell! :)
das mit
Code:
ist genau das, was ich gesucht hatte! Dachte bisher, das ginge so nur bei Sets... Vielen Dank!
if ityp in [3,5,6] then
Eine Case-Abfrage kommt bei mir leider nicht in Frage, da die Abfrage in mehreren If...then...else Konstrukturen vorkommt und daher möglichst in einer Zeile erfolgen muss. |
Re: Optimierung: Vereinfachte IF/OR-Abfrage bei Integer
Zitat:
Gruß Hawkeye |
Re: Optimierung: Vereinfachte IF/OR-Abfrage bei Integer
Zitat:
![]() Und glaub mir, der Compiler beschwert sich leider nicht - abgesehen von dem, was auf DelphiBasics steht, hatte ich auch schon diverse Probleme mit in, die ziemlich genau so waren, wie auf DelphiBasics auch beschrieben (lowest byte). Gabs auch im Borland QC schon einiges zu - zum einen, daß 256 Einträge möglich sind, zum anderen daß "in [0..n]" "very bad practice" ist (und das sage ich aus eigener Erfahrung, musste da schon selber früh lernen, daß der Compiler eben doch nicht besonders optimiert oder erkennt :D ). |
Re: Optimierung: Vereinfachte IF/OR-Abfrage bei Integer
Zitat:
@Hawkeye? 32 Byte? :shock: Hätt ich kaum gedacht, ich dachte das beschränkt sich auf Cardinals... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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