![]() |
Problem: While Schleife
Hallo,
ich möchte folgendes gerne vereinfachen:
Delphi-Quellcode:
Die variablen enthalten normale integer werte.
while (a=b) or (a=c) or (a=d) ... do begin
Habe mir gedacht man könnte dies auch so vereinfachen:
Delphi-Quellcode:
Dies geht jedoch nicht.
while a=b,c,d,e... do begin
Gibt es eine möglichkeit dies zu vereinfachen? Mfg |
Re: Problem: While Schleife
Delphi-Quellcode:
while a in ( a, b, c, ...)
|
Re: Problem: While Schleife
Zitat:
|
Re: Problem: While Schleife
Dann nehme ich alles zurück
|
Re: Problem: While Schleife
Also gibt es keine möglichkeit dies zu vereinfachen? :(
|
Re: Problem: While Schleife
Es gibt praktisch nur die von dir am Anfang gezeigte Möglichkeit.
|
Re: Problem: While Schleife
:( Schade, naja trozdem danke!
|
Re: Problem: While Schleife
Gibt es denn eine möglichkeit bei IF?
Delphi-Quellcode:
if a=b,c,d... then repeat ... until ...
|
Re: Problem: While Schleife
Nein.
|
Re: Problem: While Schleife
Zitat:
Delphi-Quellcode:
Und man staune: es funzt so gar :lol:
while a in [ b, c, d]
Zitat:
Zitat:
Delphi-Quellcode:
[EDIT] der Vollständigkeit halber noch das hier
if a in [b,c,d] then begin ...
Delphi-Quellcode:
[/Edit]
repeat
//--mach was mit a until a in [b,c,d] So mal so rein theoretisch in den Raum geworfen; der Verwendungszweck der Konstrukte ist natürlich sinnnvoll oder auch nicht - kommt halt auf die Programmlogik an... |
Re: Problem: While Schleife
die IN-Variante geht nur mit Sets, da dürfen a, b, c nur ordinale Typen (Byte, Char) sein, aber keine Integer oder Strings.
Ne Variante wäre:
Delphi-Quellcode:
hier können auch Integer genommen werden.
case a of
b, c, d: Machwas else machnix end |
Re: Problem: While Schleife
Hai,
warum nicht eine kleine Hilfsfunktion basteln?
Delphi-Quellcode:
function InArray(aValue: Integer; aArray: array of Integer): Boolean;
var i: Integer; begin result := False; for i := Low(aArray) to High(aArray) do begin if (aValue = aArray[i]) then begin result := True; Exit; end; end; end; procedure TDemo_Form.Button1Click(Sender: TObject); var a, b, c, d: Integer; begin a := 1; b := 2; c := 3; d := 4; while InArray(a, [b, c, d]) do begin end; end; |
Re: Problem: While Schleife
Zitat:
[EDIT] @Sharky:
Code:
funzt sehr wohl, wie ich in #12 beschrieben habe
while a in [b, c, d]
[/EDIT] |
Re: Problem: While Schleife
Zitat:
|
Re: Problem: While Schleife
Zitat:
|
Re: Problem: While Schleife
@Sharky: richtig! Also funzt das mit Integer genauso, allerdings nur bis zur 'Grenze' 255 ;) Selbst bei Variablen, sofern der Wert eben diese Grenze nicht überschreitet.
|
Re: Problem: While Schleife
Mh....
auch mal senfen.... NEVER use Exit in your code! (Ich weiss, ist philosophisch und hart umstritten) Abaenderung (sorry hab nur ne Koreanische Tastatur / kein Umlaute) der Funktion von Sharky.
Delphi-Quellcode:
function InArr(const val:Integer;arr:array of integer):Boolean;
var i:integer; begin result := false; i := low(arr); // := 0; while (not(result) and (i<=high(arr))) do begin result := result or (val=arr[i]); inc(i); end; end; procedure TForm1.Button1Click(Sender: TObject); var i : integer; ar : array of integer; begin setlength(ar,65536); // es geht auch noch groesser!!! for i := low(ar) to high(ar) do ar[i]:=random(MaxInt); if InArr(random(MaxInt),ar) then Button1.Caption:='IN' else Button1.Caption:='NOT IN'; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 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