Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Developer_X

Treue Seele

  • »Developer_X« ist der Autor dieses Themas

Beiträge: 247

Wohnort: Hessen

Beruf: Schüler

  • Private Nachricht senden

11

16.01.2011, 19:20

Könnte es sein, dass er Pixel bemalt, die gar nicht vorhanden sind, kann es da zu Fehlern kommen?
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. -
Kevin Riehl

Developer_X

Treue Seele

  • »Developer_X« ist der Autor dieses Themas

Beiträge: 247

Wohnort: Hessen

Beruf: Schüler

  • Private Nachricht senden

12

16.01.2011, 19:24

Ok, habe das Programm genauer identifizieren können, delete tab funktioniert nicht, also alles ab dann
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. -
Kevin Riehl

Developer_X

Treue Seele

  • »Developer_X« ist der Autor dieses Themas

Beiträge: 247

Wohnort: Hessen

Beruf: Schüler

  • Private Nachricht senden

13

16.01.2011, 19:31

Ok, ich poste zu viel^^, aber ich habe was geändert, und zwar habe ich mal auf die Consolen ausgaben gesehen, der hat mir da manchmal geschrieben:
Cannot set pixel, jetzt habe ich die Schleife abgeändert, alles geht bis :

C-/C++-Quelltext

1
    background = new sf::Sprite(*backgroundImage);


Was ist denn dadran falsch ?
Ich habe ja im Code schon geschildert, beides sind Pointer, woran liegts, ich benutze doch den new Operator um etwas im Heap zu erstellen und mir dann den Pointer geben zu lassen, ist es nicht so?
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. -
Kevin Riehl

idontknow

unregistriert

14

16.01.2011, 19:59

Fehlermeldung...

Developer_X

Treue Seele

  • »Developer_X« ist der Autor dieses Themas

Beiträge: 247

Wohnort: Hessen

Beruf: Schüler

  • Private Nachricht senden

15

16.01.2011, 20:05

Das ist es ja, es gibt keine, das Programm hängt sich einfach auf, es erscheint ein Fenster, wo drin steht dass "Galactica Ball" nicht mehr reagiert.
Verstehst du, dann klickt man da auf abbrechen und das wars auch schon
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. -
Kevin Riehl

16

16.01.2011, 20:20

Bist du sicher, dass du dein Programm im Debug-Modus gestartet hast?

Sonst setz mal Haltepunkte und kreis so die Stelle ein, wo das Programm sich aufhängt.

Gruß
SaRu_

jokester

Treue Seele

Beiträge: 125

Wohnort: Mainz

  • Private Nachricht senden

17

17.01.2011, 10:40


C-/C++-Quelltext

1
2
3
    sf::Color* tab =new sf::Color[HEIGHT];
[...]
    delete tab;


Autsch. Nimm doch delete[] wenn du's mit new[] anforderst. Oder noch besser, nimm gleich n std::vector.
"There is a theory which states that if ever anyone discovers exactly what the Universe is for and why it is here, it will instantly disappear and be replaced by something even more bizarre and inexplicable. There is another theory which states that this has already happened" -- Douglas Adams.

Developer_X

Treue Seele

  • »Developer_X« ist der Autor dieses Themas

Beiträge: 247

Wohnort: Hessen

Beruf: Schüler

  • Private Nachricht senden

18

17.01.2011, 15:01

Bist du sicher, dass du dein Programm im Debug-Modus gestartet hast?

Sonst setz mal Haltepunkte und kreis so die Stelle ein, wo das Programm sich aufhängt.

Gruß
SaRu_


Habe ich doch schon längst gesagt:

C-/C++-Quelltext

1
background = new sf::Sprite(*backgroundImage); 


Das habe ich ja durch den debugger herausgefunden
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. -
Kevin Riehl

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Developer_X« (17.01.2011, 15:18)


Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

19

17.01.2011, 16:39

Wie Jokester schon geschrieben hat: es heißt delete[]... und nicht delete....
Außerdem kann ich mir vorstellen, dass du dieses delete zu früh aufrust und dadurch das backgroundImage ungültig wird.
Also setzte das delete[] doch mal erst nach der fehlerbehafteten Zeile.

Developer_X

Treue Seele

  • »Developer_X« ist der Autor dieses Themas

Beiträge: 247

Wohnort: Hessen

Beruf: Schüler

  • Private Nachricht senden

20

17.01.2011, 16:59

Ich benutze schon längst delete[],
und ich habe es jetzt ans Ende von der Methode gesetzt, und es klappt nicht, wenn ich es ganz weglasse,
gehts auch nícht, bricht auch ab.

Was kann ich denn jetzt tun?
Wo liegt denn der Fehler?
Ich weiß dass ihr mir alle sehr helft, und ich weiß, wie viel Geduld ihr mit mir habt.

Also nach debuggen habe ich wirklich herausfinden können, es liegt an der Zeile 22:

C-/C++-Quelltext

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 Game::makeBackground()
{
    backgroundImage = new sf::Image(WIDTH,HEIGHT);

    ColorScale gradient;
    gradient.insert(0.0,sf::Color::Black);
    gradient.insert(1.0,sf::Color::Blue);
    gradient.insert(2.0,sf::Color::Red);

    sf::Color* tab = new sf::Color[HEIGHT];
    gradient.fillTab(tab,HEIGHT);

    for(int i=0;i<WIDTH;i++)
        for(int j=0;j<HEIGHT;j++)
            backgroundImage->SetPixel(i,j,tab[j]);

    for(int i = 0;i<STARS;i++)
    {
        backgroundImage->SetPixel(sf::Randomizer::Random(1,WIDTH-2),sf::Randomizer::Random(1,HEIGHT-2),sf::Color::White);
    }

    background = new sf::Sprite(*backgroundImage);

    delete[] tab;
}
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. -
Kevin Riehl

Werbeanzeige