![]() |
if abfrage vereinfachen
Hallo,
gibt es eine Möglichkeit so eine Abfrage
Delphi-Quellcode:
if (feldaktive[161]<>1) and (feldaktive[162]<>1) and (feldaktive[163]<>1) and (feldaktive[164]<>1) and (feldaktive[165]<>1) and (feldaktive[166]<>1) and (feldaktive[167]<>1) and (feldaktive[168]<>1) and (feldaktive[169]<>1) and (feldaktive[170]<>1) then
zu vereinfachen? ferby |
Re: if abfrage vereinfachen
Spontan (auf Grund der Nummerierung) käme mir da eine Schleife in den Sinn, die vllt. einen bool-Wert setzt und sofort abgebrochen wird, wenn der Wert doch 1 ist. :? Hilft dir das irgendwie?
Edit: Nanu? Wo kam denn der Strich vor der 1 her? |
Re: if abfrage vereinfachen
Delphi-Quellcode:
Das wäre ein möglicher Weg. ;)
var i: integer; aBool: boolean;
begin aBool := False; For i := 161 to 170 do if feldaktive[i] <> 1 then aBool := true else begin aBool := false; break; end; if aBool then //edit: Ich hätte mir die Idee vorher patentieren lassen sollen :mrgreen: |
Re: if abfrage vereinfachen
Hast du doch, ich habe sie ja von dir abgeschrieben. :stupid:
|
Re: if abfrage vereinfachen
Zitat:
Delphi-Quellcode:
if not(1 in [Feldaktive[161], Feldaktive[162],...]) Then
|
Re: if abfrage vereinfachen
Hallo,
danke, hat das ganze wenigstens ein wenig verkürtzt. ferby |
Re: if abfrage vereinfachen
Zitat:
Delphi-Quellcode:
Dann kannst du im deine Abfrage wie Folgt umschreiben:
function IstImBereich(Wert: Integer; WerteArray: array of Integer; Start, Ende: Integer;
var i: Integer; begin Result := True; for i := Start to Ende do if Wert = WerteArray[i] then Exit; Result := False; end;
Delphi-Quellcode:
Das ist flexibel und liest sich gut.
if not IstImBereich(1, feldaktive, 161, 170) then ...
Ciao HeZa |
Re: if abfrage vereinfachen
könnte man das net so lösen?
Delphi-Quellcode:
if (1 in Arr[170,171,172...]) then
|
Re: if abfrage vereinfachen
Zitat:
|
Re: if abfrage vereinfachen
@HeZa:
Ich würde das nicht so machen. Denn in deine for-schleife hast variable start- und Endwerte. Da kann die Compileroptimierung nicht so gut wirken. aus
Delphi-Quellcode:
würde mit der compileroptmierung soweit ich weiß
for I:=1 to 3 do showmessage(i);
Delphi-Quellcode:
werden, aber mit veraibeln start und Endwert geht das glaube ich nicht.
showmessage(1);
showmessage(2); showmessage(3); ferby's eigentliche Lösung ist zwar blöd zu lesen, aber auf grund der compileroptmierung ziemlich gut. Am besten wäre es noch die werte, die am wahrscheinlichsten false sind nach vorne zu schreiben. Ich muss mir unbedingt diese Compileroptimierungsmethoden patentieren lassen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 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