![]() |
Re: Function vereinfachen, bei vielen if abfragen
War case nicht auf 256 Fälle beschränkt?
|
Re: Function vereinfachen, bei vielen if abfragen
Kann ich in der OH keinen Hinweis drauf entdecken, aber selbst wenn, dann setzt er halt 6 case-Anweisungen nacheinander. Ist immer noch übersichtlicher/kürzer als 1500 if-then-Abfragen :roll:
|
Re: Function vereinfachen, bei vielen if abfragen
Habe gerade nochmal nachgesehen. Es muss lediglich ein Ordinaltyp sein (Integer geht z.B. auch).
Die Info mit den 256 Fällen ist vermutlich noch aus Turbo-Pascal-Zeiten. Sorry. (Ja, ja. Das Alter) |
Re: Function vereinfachen, bei vielen if abfragen
Aus performance-Gründen würde ich aber noch 1500 else mehr schreiben:
Delphi-Quellcode:
Das macht bei 1500 Abfragen schon was aus. Ansonsten: Ohne Systematik is das wohl nicht einfacher zu machen...
if z=0 then
Result := ... else if z=1 then Result := ... else if ... mfg Christian //Edit: Da sich das mit den 256 Fällen ja erledigt hat is Case die bessere Lösung, sollte eigentlich auch etwas schneller sein. |
Re: Function vereinfachen, bei vielen if abfragen
Sicher, dass die Performance besser ist? Ich war bisher der Meinung, dass "Case" genau so arbeitet.
|
Re: Function vereinfachen, bei vielen if abfragen
Zitat:
mfg Christian |
Re: Function vereinfachen, bei vielen if abfragen
Ich hab mal nachgesehen,
bei einer Case Anweisung mit lediglich 9 [0..8] aufeinanderfolgenden Werten wird bereits eine Sprungtabelle angelegt. Das heist es wird quasi berechnet an welche Stelle das Programm verzweigt. Effizienter geht das nicht mehr. das das in einer Schleife abgearbeitet wird oder in eine "if then else" orgie aufgedröselt wird stimmt nicht. derDan |
Re: Function vereinfachen, bei vielen if abfragen
|
Re: Function vereinfachen, bei vielen if abfragen
Klasse Link. Danke marabu. Jetzt bin ich mal wieder auf einem aktuellen Stand.
Damals, anno dingens, da war das alles noch anders. :lol: |
Re: Function vereinfachen, bei vielen if abfragen
@Jasocul
Nicht ist so beständig wie die Änderung! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:50 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