"Identischen Code" vereinfachen
-
Hallo
Ich habe in einem Programm den folgenden Quellcode. Ein paar weitere sehr ähnliche Zeilen haben ich in den if-Anweisungen weggelassen.if (ImageNr==1) { Img1->Show(); Img1->Transparent=false; Img1->Picture->Bitmap->LoadFromResourceID((int)HInstance, ID_IMG1); } if (ImageNr==2) { Img2->Show(); Img2->Transparent=false; Img2->Picture->Bitmap->LoadFromResourceID((int)HInstance, ID_IMG2); } : : if (ImageNr==8) { Img8->Show(); Img8->Transparent=false; Img8->Picture->Bitmap->LoadFromResourceID((int)HInstance, ID_IMG8); }
Lässt sich das irgendwie vereinfachen?
Mit anderen Worten kann man ImgX durch irgendwie aus "Img" und ImageNr zusammensetzen?
Falls ja geht das auch mit der Resource-ID ID_IMGX?Vielen dank!
-
Kenne mich mit dem C++-Builder nicht aus, evtl kann ich dir aber mit "normalem "C++ weiterhelfen
Ich sehe mehrere Lösungsansätze, alle laufen aber auf Arrays bzw Container hinaus. Das Einfachste wäre, wenn sich die Variablen "Img1" bis "Img8" in einem einzigen Array zusammenfassen lassen und "ID_IMG1" bis "ID_IMG8" fortlaufende Zahlen sind. Falls dem so sein sollte:
WasAuchImmerFuerEineKlasse* Imgs[8]; ... // Arrays fangen mit Index 0 an WasAuchImmerFuerEineKlasse* img = Imgs[ImageNr-1]; img->Show(); img->Transparent = false; img->Picture->Bitmap->LoadFromResourceID((int)HInstance, ID_IMG1 + ImageNr-1 );
Aufgesetzt (also ohne außerhalb der Funktion was zu verändern) könnte aber auch Folgendes funktionieren:
WasAuchImmerFuerEineKlasse* imgs[8] = { Img1, Img2, Img3, ... Img8 }; int ids[8] = { ID_IMG1, ... ID_IMG8 }; WasAuchImmerFuerEineKlasse* img = imgs[ImageNr-1]; int id = ids[ImageNr-1]; img->Show(); img->Transparent = false; img->Picture->Bitmap->LoadFromResourceID((int)HInstance, id );
Falls dir Arrays unbekannt sind, sollte dir jedes beliebige C++-Tutorial aushelfen
-
Ein Blick in die FAQ lohnt sich auch immer.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39211.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39206.html