case
-
hallo,
gibt es eine moeglichkeit case-marken in einer schleife abzuarbeiten, sodass man sich die ganze tipparbeit erspart??case BUTTON1: { //la } case BUTTON2: { //la }
-
du meinst einen Fall Through (so nennt man es wenigstens bei Java ;)):
case BUTTON1: case BUTTON2: { //la break; }
-
ups, hab mich glaub ich ein wenig bloed ausgedrueckt...
ich meinte alle case marken in einer schleife ansprechen und dann bestimmte ereignisee abfragen...so etwa wie:
for(i = 0; i <= 10, i++)
{
bla[i] = i;
}
-
ich versteh immer noch nicht was du willst
vielleicht wird es einfacher zu verstehen, wenn du auch noch dein Problem etwas erörterst - vielleicht kann man dein "design" etwas umändern...?
-
was hat deine Forschleife mit switch zu tun? drück dir bitte besser aus, damit wir verstehen können, was du willst.
-
Wäre schön, wenn du dein Vorhaben etwas erläuterst. Aber ich kann schonmal definitiv sagen, dass es NICHT möglich ist, case-Marken in einer for-schleife zu durchlaufen.
Dafür gibt es ja genügend andere Kontrollstrukturen, sodass das auch nicht erforderlich wäre
-
masterofx32 schrieb:
Aber ich kann schonmal definitiv sagen, dass es NICHT möglich ist, case-Marken in einer for-schleife zu durchlaufen.
Wuerde ich so nicht sagen:
switch(i) { case 0: for(j=0; j<10; ++j) { case 1: foo(); case 2: bar(); } }
die frage ist eher nur: will der OP wirklich das?
-
Geht's eventuell darum, die case-labels zur Laufzeit dynamisch zu generieren? Also sowas:
case BUTTON[i]
Das geht definitiv nicht.
-
Shade Of Mine schrieb:
masterofx32 schrieb:
Aber ich kann schonmal definitiv sagen, dass es NICHT möglich ist, case-Marken in einer for-schleife zu durchlaufen.
Wuerde ich so nicht sagen:
[...]
Naja, das ist klar, aber ich habe das, was er geschrieben hat eher als reflectionähnlichen Umgang mit den Case-Marken verstanden und das geht ja nicht. Diese Diskussion ist ja eigentlich auch überflüssig, ich denke, dass er für eine Vielzahl von Buttons die Fallunterscheidung durchführen will, um zu schauen, welcher Button "der richtige" ist.
In dem Fall wäre der Lösungsansatz wahrscheinlich der Einsatz Arrays und natürlich kein Durchlaufen von Casemarken in einer Schleife, wie er sich ausgedrückt hat.
-
masterofx32 schrieb:
ich habe das, was er geschrieben hat eher als reflectionähnlichen Umgang mit den Case-Marken verstanden
Genau das ist der Punkt: wenn der OP sich nicht klar ausdrückt kann man nicht antworten.
-
sry fuers komische ausdrueken, wusste nicht genau wie ich es erklaeren sollte...
sg1 hat das gepostet, das ich meinte...hab in einem programm 25 case marken, die auch benoetigt werden (API) und das ist einfach nur tierisch viel tipparbeit
-
man könnte die case-marken in ein array packen und die dazugehörigen codes über function-pointer ausführen. so z.b.
... int cases[] = {BUTTON1, BUTTON2, ...}; // alle buttons void (*codes[])(void) = {code_button1, code_button2, ...}; // dazugehörige funktionen int s; ... for (s=0; s<sizeof(cases)/sizeof(int); s++) { // case-label suchen... if (ehemalige_switch_variable == cases[s]) { // ...gefunden, code ausführen codes[s](); // nicht mehr weitersuchen break; } } ...
sowas ähnliches könnt' schon schreibarbeit sparen. ist natürlich langsamer als switch/case aber was soll's