Switch mit Wertebereich
-
Hallo,
ich habe folgenden Delphi-Code, den ich nach C++ (bzw. Borland C++) portieren möchte.
case ord(txt_Text.Text[i]) of 65..90, 97..122: begin ProgressBar.position := ProgressBar.position + 4 end; 48..57: begin ProgressBar.position := ProgressBar.position + 7 end; Else begin ProgressBar.position := ProgressBar.position + 10 end; end; //case
Ich möchte - wie im Quellcode zu sehen ist - verschiedene Wertebereiche prüfen. Und zwar mittels Switch. Natürlich könnte ich das auch mit if-else lösen, aber mit switch ist es eben komprimierter. Leider habe ich weder in der Hilfe noch hier im Forum einen Hinweis darauf gefunden, ob es mit switch überhaupt möglich ist, Wertebereiche zu überprüfen.
-
Bomania schrieb:
ob es mit switch überhaupt möglich ist, Wertebereiche zu überprüfen.
Nein, if/else ist angesagt.
Du weisst aber, dass du Delphi-Units direkt im BCB verwenden kannst, eine Portierung also nicht notwendigerweise erforderlich sein muss!? Das allerdings nur als allgemeiner Hinweis, im konkreten Fall mit dem Ansprechen der Komponente ist das keine Lösung.
-
#include <cctype> using namespace std; ... if (isalpha(txt_Text.Text[i])) ProgressBar.position += 4; else if (isdigit(txt_Text.Text[i])) ProgressBar.position += 7; else ProgressBar.position += 10;
ist sogar lesbarer, weil die Intention besser rüberkommt.
-
Jansen schrieb:
Nein, if/else ist angesagt.
Naja, C++ halt mal wieder
Jansen schrieb:
Du weisst aber, dass du Delphi-Units direkt im BCB verwenden kannst
Jepp, habe ich auch schon bei ein paar Modulen gemacht, bei denen die Portierung durch fehlendes C++ Wissen zu lang und aufwändig gewesen wäre.