![]() |
mit case bei mehreren Werten mehrere Anweisungen ausführen
Wie kann man 2,3 Werte effizent ausführen?
Hab's mir ungefähr so vorgestellt:
Delphi-Quellcode:
Case i,x of
1:; 2:; 1 and 2:; |
Re: mit case bei mehreren Wert mehrere Anweisungen ausführen
case möchte einen ordinalen typ. entweder musst du die werte einzeln auswerten oder das mit if else if ... machen.
Delphi-Quellcode:
if (i = ?) and (x = ?) then
... else if (i = ?) then ... else if (x = ?) then ...; |
Re: mit case bei mehreren Werten mehrere Anweisungen ausführ
Irgendwie häng ich da gerad auch fest.
Wie frage ich da 3 Werte so ab, der befehl sollte in eine If abfrage oder so passen! Ich habe drei Variablen.(Jeweils Zahlen zw. 0..9;x,i,y) und es sollen 50 mögliche variationen abgefragt werden: Hier zum Beispiel ob die Variablen 2,3 enthalen
Delphi-Quellcode:
Erklärung:
if (x in [2,3]) and (i in [2,3])and (y in [2,3]) then
i:=2; x:=2; y:=2;Hier sollte ein False kommen, da keine 3 enthalten ist. i:=3; x:=2; y:=2;Hier sollte ein True kommen, da eine 2 & 3 enthalten ist. i:=1; x:=2; y:=3;Hier sollte ein True kommen, da eine 2 & 3 enthalten ist. |
Re: mit case bei mehreren Werten mehrere Anweisungen ausführ
Hallo,
wie wäre es damit?
Delphi-Quellcode:
Die Anwendung:
type
TDigit = 0..9; TDigitSet = set of TDigit; function Check (a, b, c: TDigit; const aSet: TDigitSet): Boolean; begin Result := ([a, b, c] * aSet = aSet); end;
Delphi-Quellcode:
Gruß Hawkeye
Flag := Check(2, 2, 2, [2, 3]); // liefert False
Flag := Check(3, 2, 2, [2, 3]); // liefert True Flag := Check(1, 2, 3, [2, 3]); // liefert True |
Re: mit case bei mehreren Werten mehrere Anweisungen ausführ
Perfekt,genau dass hab ich gesucht
|
Re: mit case bei mehreren Werten mehrere Anweisungen ausführ
Sorry eine Sache hatte ich noch vergessen:
Flag := Check(2, 2, 2, [2, 2]); // liefert True, perfekt Flag := Check(1, 2, 2, [2, 2]); // liefert True, perfekt Flag := Check(1, 1, 2, [2, 2]); // liefert True, hier wöllte ich gern false |
Re: mit case bei mehreren Werten mehrere Anweisungen ausführ
Ok, ist das besser?
Delphi-Quellcode:
Gruß Hawkeye
function Check (a, b, c: TDigit; const aSet: TDigitSet): Boolean;
begin Result := (([a, b] = aSet) or ([b, c] = aSet) or ([a, c] = aSet)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:39 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