AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi mit case bei mehreren Werten mehrere Anweisungen ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

mit case bei mehreren Werten mehrere Anweisungen ausführen

Ein Thema von Hallo_Thomas · begonnen am 10. Mai 2006 · letzter Beitrag vom 10. Mai 2006
Antwort Antwort
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#1

mit case bei mehreren Werten mehrere Anweisungen ausführen

  Alt 10. Mai 2006, 20:23
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:;
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#2

Re: mit case bei mehreren Wert mehrere Anweisungen ausführen

  Alt 10. Mai 2006, 20:25
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
   ...;
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#3

Re: mit case bei mehreren Werten mehrere Anweisungen ausführ

  Alt 10. Mai 2006, 20:50
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

 if (x in [2,3]) and (i in [2,3])and (y in [2,3]) then Erklärung:
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.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: mit case bei mehreren Werten mehrere Anweisungen ausführ

  Alt 10. Mai 2006, 21:04
Hallo,

wie wäre es damit?

Delphi-Quellcode:
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;
Die Anwendung:

Delphi-Quellcode:
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
Gruß Hawkeye
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#5

Re: mit case bei mehreren Werten mehrere Anweisungen ausführ

  Alt 10. Mai 2006, 21:37
Perfekt,genau dass hab ich gesucht
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#6

Re: mit case bei mehreren Werten mehrere Anweisungen ausführ

  Alt 10. Mai 2006, 22:04
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
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: mit case bei mehreren Werten mehrere Anweisungen ausführ

  Alt 10. Mai 2006, 23:41
Ok, ist das besser?

Delphi-Quellcode:
function Check (a, b, c: TDigit; const aSet: TDigitSet): Boolean;
begin
  Result := (([a, b] = aSet) or ([b, c] = aSet) or ([a, c] = aSet));
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz