webForumDet fria alternativet

förenkla lite grann

C/C++

3 svar · 385 visningar · startad av DavidB

Medlem sedan jan. 20001 372 inlägg
Frågan#1

har en kod som jag vill upprepa flera gånger i mitt program.
den ser ut följande:

        if(KlotImage->Top - 11 <= [b]Image1[/b]->Top && KlotImage->Top >= [b]Image1[/b]->Top - 10){
                if(KlotImage->Left + 10 >= [b]Image1[/b]->Left && KlotImage->Left <= [b]Image1[/b]->Left + 25){
                        if([b]Image1[/b]->Visible == TRUE){
                                [b]Image1[/b]->Visible = FALSE;

                                if(KlotImage->Left + 10 >= [b]Image1[/b]->Left && KlotImage->Left + 10 <= [b]Image1[/b]->Left + 3){
                                        Horisontal->Caption = 0;
                                }
                                if(KlotImage->Left >= [b]Image1[/b]->Left + 22 && KlotImage->Left <= [b]Image1[/b]->Left + 25){
                                        Horisontal->Caption = 1;
                                }
                                if(KlotImage->Top >= [b]Image1[/b]->Top + 7 && KlotImage->Top <= [b]Image1[/b]->Top + 10){
                                        Vertikal->Caption = 1;
                                }
                                if(KlotImage->Top + 10 >= [b]Image1[/b]->Top && KlotImage->Top + 10 <= [b]Image1[/b]->Top + 3){
                                        Vertikal->Caption = 0;
                                }

                         }
                }

enda skillnaden är att jag den fetmarkerade koden Image1 ska bytas ut mot Image2 osv. ända upp till ett bestämt antal.
går det att göra med nån form av loop eller nånting? för koden blir så mycket mer lättläst och så behöver jag bara ändra på ett ställe istället för några hundra om jag måste ändra nåt.

kan väl tillägga att jag använder C++ Builder 4.

Medlem sedan juni 20008 205 inlägg
#2

Tanken som slår en är antingen att du skriver en funktion, eller att du använder en array...

Medlem sedan jan. 20001 372 inlägg
#3

okej, då till följdfrågan. hur gör man det?

vet ju hur man gör en funktion men inte hur den ska se ut men ovanstående.

har precis börjat läsa c++ i skolan så jag är ju inte så jättebra på det ännu

Medlem sedan juni 200010 432 inlägg
#4

På den kod du presenterade ser det ut som att den ska manipulera några variabler i en struct... så det liknar mer c kod än c++... är det det senare kanske du får visa lite mer kod i form av klasser med medlemmar, namespace, åtkomsthet m.m.. men, men:

void funktionsnamn (const typ &var){
  //do something
}

Är ju en typisk funktion där du skickar med en parameter ( kan var flera) som indata och mellan {} petar du in din kod som bearbetar indatan. Ovan funktion returnerar inget utan får jobba direkt mot nån halvglobal data. Bättre är det om man ist deklarerar funktionen till att ta emot ett objekt och returnera detta... jaja, utan mer info om hur resten av koden ser ut och exakt vad som behövs göras är det knepigt att hjälpa till.

Att du kör den i CBuilder 4 gör det inte direkt lättare att direkt angripa koden då en del saker inte lämnas öppet för beskådan ;)

268 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)