Main.exe Funktioniert nicht mehr



  • Hallo,
    ich arbeite seit kurzem an einer Graphics Library. Aber wenn ich das Programm Starte kommt nach kurzer Zeit (nachdem auf dem Terminal 8-10 x'e geschrieben wurden) eine Meldung das die Main.exe nicht mehr Funktioniert. Und ich weiß leider nicht was das Problem ist ... Könnt ihr mir Bitte bei dem Problem Helfen ?

    main.cpp:

    #include <iostream>
    #include <windows.h>
    #include "Screen.h"
    using namespace std;
    
    int main () {
    
    	glSetScreen (50, 20, "Test");
    	glLoadScreen ();
    	cin.get();
    	return 0;
    }
    

    glLoadScreen/ Screen.h:

    void glLoadScreen (){
    
    	int x = 0;
    	int y = 0;
    	int f = 32;
    	int v = 31;
    	int i = 1;
    
    	while ( x != 1023 && y != 31) {
    
    		Screen [x] [y] = ' ';
    		x++;
    		std::cout << "x";
    		Sleep (100);
    		if ( x = v) {
    
    			y++;
    			i++;
    			v = f * i - 1;
    		}
    		if ( x == 1023 && y == 31)
    			break;
    	}
    }
    

    Gruß iHofel



  • Wie ist Screen definiert?



  • Zeile 16 macht bestimmt nicht das, was du willst.



  • Manni66 schrieb:

    Zeile 16 macht bestimmt nicht das, was du willst.

    Ja das hab ich gemerkt aber der "Erorr" ist immer noch da..



  • nwp3 schrieb:

    Wie ist Screen definiert?

    ?



  • Was ist Screen? Ein Array? Eine Klasse mit operator[]? Ein Container?
    Zeig mal, wo du den Namen Screen eingeführt hast.
    Ach, zeig am besten dem kompletten Inhalt von Screen.h.



  • Nathan schrieb:

    Was ist Screen? Ein Array? Eine Klasse mit operator[]? Ein Container?
    Zeig mal, wo du den Namen Screen eingeführt hast.
    Ach, zeig am besten dem kompletten Inhalt von Screen.h.

    Das ist er:

    #include <iostream>
    #include <windows.h>
    
    char Screen [1024] [1024];
    
    void glSetTerminal(short, short, LPCTSTR);
    int glLoadScreen (short, short);
    int glDrawScreen (short, short);
    
    void glSetScreen(short width, short hight, LPCTSTR title) { 
        HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE); 
        SMALL_RECT size; 
        COORD b_size; 
    
        size.Left = 0; 
        size.Top = 0; 
        size.Right = width; 
        size.Bottom = hight; 
        b_size.X = width+1; 
        b_size.Y = hight+1; 
    
        SetConsoleWindowInfo(hCon, true, &size); 
        SetConsoleScreenBufferSize(hCon, b_size); 
        SetConsoleTitle(title); 
    }
    
    int glLoadScreen (short X, short Y){
    
    	int x, y = 0;
    
    	while ( y != Y ){
    
    		Screen [x] [y] = ' ';
    		x++;
    
    		if ( x == X) {
    
    			y++;
    			x = 0;
    		}
    		if ( y == Y) {
    			break;
    			return 0;
    		}
    
    	}
    }
    
    int glDrawScreen (short X, short Y) {
    
    	int x = 0;
    	int y = 0;
    
    	while ( y != Y) {
    
    		std::cout << Screen [x] [y] ;
    		x++;
    
    		if ( x == X) {	
    			y++;
    			x = 0;
    		}
    		if ( y == Y) {
    			break;
    			return 0;
    		}
    
    	}
    }
    


  • Zeile 16 macht bestimmt nicht das, was du willst.

    iHofel, aufgepasst! Schon lesen was Manni66 sagt. Da liegt nämlich dein Problem. Vermutlich stürzt es ab nachdem (mindestens) 33 mal "x" ausgegeben wurde. So lange läuft das Programm nämlich, bis x größer als 1023 ist und du auf Speicher zugreifst, der dir nicht gehört.



  • KMT schrieb:

    Zeile 16 macht bestimmt nicht das, was du willst.

    iHofel, aufgepasst! Schon lesen was Manni66 sagt. Da liegt nämlich dein Problem. Vermutlich stürzt es ab nachdem (mindestens) 33 mal "x" ausgegeben wurde. So lange läuft das Programm nämlich, bis x größer als 1023 ist und du auf Speicher zugreifst, der dir nicht gehört.

    iHofel schrieb:

    Manni66 schrieb:

    Zeile 16 macht bestimmt nicht das, was du willst.

    Ja das hab ich gemerkt und geändert aber der "Erorr" ist immer noch da..

    if ( x == X) {
    
                y++;
                x = 0;
            }
    


  • Zeile 16 war if (x = v).


Log in to reply