hi Leute ich bin blutiger C++ anfänger und habe jetzt vor ein programm zu schreiben bei dem wenn man auf einen knopf drückt auf 10 verschiedenen Labels was anderes steht (nix gleiches!!!) Hier mein bisheriger Quelltext:
---------------------------------------------------------------------------- ----------------------------------------------------------------------------- void __fastcall TForm1::Panel1Click(TObject *Sender) { Nr = random (9) + 1; if (Nr == 1) Label1->Caption = "a"; if (Nr == 2) Label1->Caption = "b"; if (Nr == 3) Label1->Caption = "c"; if (Nr == 4) Label1->Caption = "d"; if (Nr == 5) Label1->Caption = "e"; if (Nr == 6) Label1->Caption = "f"; if (Nr == 7) Label1->Caption = "g"; if (Nr == 8) Label1->Caption = "h"; if (Nr == 9) Label1->Caption = "i"; Nr2 = random (9) + 1; while (Nr == Nr2) Nr2 = random (9) + 1; if (Nr2 == 1) Label2->Caption = "a"; if (Nr2 == 2) Label2->Caption = "b"; if (Nr2 == 3) Label2->Caption = "c"; if (Nr2 == 4) Label2->Caption = "d"; if (Nr2 == 5) Label2->Caption = "e"; if (Nr2 == 6) Label2->Caption = "f"; if (Nr2 == 7) Label2->Caption = "g"; if (Nr2 == 8) Label2->Caption = "h"; if (Nr2 == 9) Label2->Caption = "i";
Nr3 = random (9) + 1; while ((Nr == Nr2) || (Nr == Nr3) || (Nr2 == Nr3)) Nr3 = random (9) + 1; if (Nr3 == 1) Label3->Caption = "a"; if (Nr3 == 2) Label3->Caption = "b"; if (Nr3 == 3) Label3->Caption = "c"; if (Nr3 == 4) Label3->Caption = "d"; if (Nr3 == 5) Label3->Caption = "e"; if (Nr3 == 6) Label3->Caption = "f"; if (Nr3 == 7) Label3->Caption = "g"; if (Nr3 == 8) Label3->Caption = "h"; if (Nr3 == 9) Label3->Caption = "i"; Nr4 = random (9) + 1; while ((Nr == Nr2) || (Nr == Nr3) || (Nr2 == Nr3) || (Nr4 == Nr) || (Nr4 == Nr2) || (Nr4 == Nr3)) Nr4 = random (9) + 1; if (Nr4 == 1) Label4->Caption = "a"; if (Nr4 == 2) Label4->Caption = "b"; if (Nr4 == 3) Label4->Caption = "c"; if (Nr4 == 4) Label4->Caption = "d"; if (Nr4 == 5) Label4->Caption = "e"; if (Nr4 == 6) Label4->Caption = "f"; if (Nr4 == 7) Label4->Caption = "g"; if (Nr4 == 8) Label4->Caption = "h"; if (Nr4 == 9) Label4->Caption = "i";
Nun mein Problem: wie ihr seht nimmt die while Bedingung langsam aber sicher ausmasse an da jede variable mit jeder anderen verglichen werden muss........
gibt es noch andere Möglichkeiten?????
Sorry wenn die frage dumm klingt aber ich kenne mich halt einfach noch net so aus
zum einen kannst du in einer Schleife mittels FindComponent("Label"+IntToStr(Nr)) die Labels erfragen, anstatt jede Schleife extra zu programmieren, zum anderen kannst du den Zahlenwert direkt in ein char verwandeln (mittels der ASCII-Tabelle): Label->Caption = 'a' + nNr - 1;
Außerdem solltest du dich mal mit Arrays auseinandersetzen...
Für den Programmiereinstieg empfehle ich dir außerdem ersteinmal die Konsolenprogrammierung, um die Standard-C++ Programmierung zu erlernen, Anschließend kannst du dann mittels der VCL dann grafischen Schnickschnack hinzufügen.