[c++] Vereenvoudigen code

Pagina: 1
Acties:

  • Emiel1984
  • Registratie: Maart 2005
  • Laatst online: 17:43

Emiel1984

Made in NL

Topicstarter
Op dit moment heb ik maar even de volgende code;

code:
1
2
3
4
5
6
7
8
9
10
11
        iRandom=(rand() %25) +1;
        sprintf(link, "E:\\Programma\\Afbeeldingen\\%d.bmp", iRandom);
        afbeelding= link;
        Image2->Picture->LoadFromFile(afbeelding);

        iRandom=(rand() %25) +1;
        sprintf(link, "E:\\Programma\\Afbeeldingen\\%d.bmp", iRandom);
        afbeelding= link;
        Image3->Picture->LoadFromFile(afbeelding);

       etc...


Ik weet dat het mogenlijk zou moeten zijn om deze code in een do while loopje te gooien;

code:
1
2
3
4
5
6
7
8
9
10
        do 
        iRandom=(rand() %25) +1;
        sprintf(link, "E:\\Programma\\Afbeeldingen\\%d.bmp", iRandom);
        afbeelding= link;
        Image(teller)->Picture->LoadFromFile(afbeelding);
        Teller++;
        while(Teller < 10)


       etc...


Mijn enige probleem is dat ik het niet voor elkaar krijg om de regel ;

Image(teller)->Picture->LoadFromFile(afbeelding);

kan realiseren. Ik heb het geprobeert met

code:
1
2
sprintf(LinkToPicture,"Image%d", Teller);
LinkToPicture->Picture->LoadFromFile(afbeelding);


Helaas werkte dit werkte dus niet. Heeft iemand een idee hoe ik dit wel kan realiseren. Bvd.

[ Voor 5% gewijzigd door Emiel1984 op 24-12-2005 17:27 ]

[LTS][MTS][HTS]


  • Daspeed
  • Registratie: Maart 2001
  • Laatst online: 11:17
Ik weet niet precies wat je doet in je code, maar 't lijkt erop dat je nog niet van een array of vector (oid) gehoord hebt. misschien moet je daar eens naar op zoek

[ Voor 5% gewijzigd door Daspeed op 24-12-2005 17:34 ]


  • thrax
  • Registratie: Maart 2000
  • Laatst online: 18-06-2025
Maak eens een array van TImage objecten. Die kun je dan in een loop laden, processen, whateveren :p


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void main(void)
{
   TImage *image[10];
   int         counter;
   char      link[128];
   int        iRandom;
     
   for (counter = 0; counter < 10; counter++)
   {
       image[counter] = new TImage();

        iRandom=(rand() %25) +1;
        sprintf(link, "E:\\Programma\\Afbeeldingen\\%d.bmp", iRandom);

        image[counter]->Picture->LoadFromFile(link);
    }

    // use your TImages here.....

    for (counter = 0; counter < 10; counter++)
    {
       delete image[counter];
       image[counter] = NULL;
    }
}


Wat had je eigenlijk in gedachten met het volgende stukje code?
code:
1
2
sprintf(LinkToPicture,"Image%d", Teller);
LinkToPicture->Picture->LoadFromFile(afbeelding);

[ Voor 29% gewijzigd door thrax op 24-12-2005 17:41 ]

"Ore wa bakemono? Che, ore wa akuma da!"


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:08

.oisyn

Moderator Devschuur®

Demotivational Speaker

Gebruikelijke beginnersfout. De namen van variabelen in code zijn alleen een handigheid voor de programmeur (het zou wat zijn als je met pure geheugenadressen moest gaan werken ;)), na het compileren blijft er niets meer van over en dus kun je ook niet -terwijl je programma loopt- de juiste variabele vinden bij een string.

Daarvoor zijn hele andere methoden beschikbaar. Zo kun je een array maken en de elementen van die array in een loopje aanspreken (dus niet Image1, Image2, ...; maar Image[0], Image[1], ...). Een andere manier is om gebruik te maken van een geassocieerde structuur, zoals bijvoorbeeld een std::map<std::string, TImage *>, zodat je wél met behulp van een string de juiste TImage kunt vinden.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Emiel1984
  • Registratie: Maart 2005
  • Laatst online: 17:43

Emiel1984

Made in NL

Topicstarter
Ik wil graag afbeeldingen random neerzetten uiteindelijk.

Image(teller)->Left= iRandomLeft;
Image(teller)->Top= iRandomTop;

Ik ben nu nog even aan het kijken of ik een dergelijke functie in een loopje kan gooien. In dit loopje wil in dan gaan controleren of de plek bezet is (das niet zo moeilijk).

Ik wil dus eigenlijk gewoon weten of het min of meer mogenlijk is een 'link' een variabele te gooien.


I@DrClearbottom :Ik heb wel is gehoort van een array, hoe bedoel je dan oplossen met een array ?

[LTS][MTS][HTS]


Verwijderd

Hij bedoelt dat je een array maakt van instanties van het object TImage of wat je Image3 in je voorbeeld dan ook is:

C:
1
2
3
4
5
6
7
TImage Image[10];
for (unsigned short i=0; i<10; i++) {
  iRandom=(rand() %25) +1;
  sprintf(link, "E:\\Programma\\Afbeeldingen\\%d.bmp", iRandom);
  afbeelding= link;
  Image[i]->Picture->LoadFromFile(afbeelding);
}

  • Emiel1984
  • Registratie: Maart 2005
  • Laatst online: 17:43

Emiel1984

Made in NL

Topicstarter
Verwijderd schreef op zaterdag 24 december 2005 @ 20:10:
Hij bedoelt dat je een array maakt van instanties van het object TImage of wat je Image3 in je voorbeeld dan ook is:
Best nog even bezig geweest om uit te zoeken hoe jullie het nou bedoelde maar het is gelukt, thks. Ik weet dat je mensen niet telkens "groetjes bedankjes enzo" mag doen maar gezien mijn tijd(nood) ben ik jullie zeer dankbaar :D.

[LTS][MTS][HTS]

Pagina: 1