Absturz nach ca 1min - C & SDL2 & ANDROID



  • TouchXY rendering version:

    #include <stdlib.h>
    #include <string.h>
    #include <SDL2/SDL.h>
    #include "SDL2/SDL_ttf.h"
    
    int running;
    int xnum, ynum, status;
    int digit1[], digit2[], digit3[], digit4[];
    
    //Screen grösse für die Touchabfrage
    SDL_Rect gScreenRect = { 0, 0, 820, 480 };
    
    main()
    {  
          SDL_Window *sdlWindow;             // Zeiger auf "das Blatt"
    
          SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER);  // Initialisiert SDL2
    
            // Arbeitsfenster mit folgenden Eigenschaften erstellen:
            sdlWindow = SDL_CreateWindow(
            "TouchXY",                       // Fenstertitel
            SDL_WINDOWPOS_UNDEFINED,         // initialisiert x Position
            SDL_WINDOWPOS_UNDEFINED,         // initialisiert y Position
            0,                               // breit, in pixel
            0,                               // hoch, in pixel
            SDL_WINDOW_FULLSCREEN_DESKTOP    // Ganzen Bildschirm benutzen
            );
    
         // Erstellt u initialisiert hardware beschleunigten Renderer mit syncro. zum Screen (Hz)
         SDL_Renderer* sdlRenderer = SDL_CreateRenderer(sdlWindow, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);    
         SDL_SetHint (SDL_HINT_RENDER_SCALE_QUALITY, "linear"); //Skalierungs Anpassung
         SDL_RenderSetLogicalSize (sdlRenderer, 820, 480); //Rendern auf dieses Format
    
         SDL_Texture *sdlTexture;   // Textur anlegen
         sdlTexture = SDL_CreateTexture (sdlRenderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, 820, 420);
    
               if (TTF_Init()==-1)   {        // Initialisiert TrueTypeFont Plugin für SDL
                     printf("TTF_Init:%s\n",TTF_GetError()); // Fehler ausgeben
                     exit(2); // Fehlerbedingtes Beenden
               }
    
              TTF_Font* font;        // Läd schrift.ttf in grösse 100 in font     
              font = TTF_OpenFont("schrift.ttf" ,100);
                  if (!font) {
                          printf("TTF_OpenFont: %s \n", TTF_GetError());     //Fehlerumgang
                  }
    
    SDL_Point touchLocation = { gScreenRect.w / 2, gScreenRect.h / 2 }; // Touchkoordinaten an Screen anpassen
    //SDL_TouchID SDL_GetTouchDevice(int touchID)                 
    //SDL_Finger* SDL_GetTouchFinger(touchID, int index);                 
    
    #include "itoa.h"
    
            SDL_SetRenderDrawColor( sdlRenderer, 0, 0, 0, 255 );
    
             SDL_Surface *text; //  Textsurface
    
             SDL_Event test_event; // Ein Eventhändeler
    
             status = 2; // Finger UP
             touchLocation.x = 0;
             touchLocation.y = 0;
             // Die "Letzte Position" Nullen...
             xnum = touchLocation.x; // Vorbereiten für itoa
             ynum = touchLocation.y;   
             itoa(xnum, digit3);     // Zahlen in String umwandeln
             itoa(ynum, digit4);                                          
    
             running = 1;
          while(running)   {       
              if (test_event.type == SDL_QUIT) {
                    running = 0;
                    break;
              }  
              SDL_RenderClear( sdlRenderer );
              while (SDL_PollEvent(&test_event))   {                 
                    switch (test_event.type)   {
                              case SDL_FINGERDOWN:                                  
                                      touchLocation.x = test_event.tfinger.x * gScreenRect.w; 
                                      touchLocation.y = test_event.tfinger.y * gScreenRect.h;
                                      status = 1;                                                         
                                      SDL_Delay ( 5 );
                                      break; 
    
                              case SDL_FINGERUP:                                  
                                      touchLocation.x = test_event.tfinger.x * gScreenRect.w; 
                                      touchLocation.y = test_event.tfinger.y * gScreenRect.h;
                                      xnum = touchLocation.x; // Vorbereiten für itoa
                                      ynum = touchLocation.y;   
                                      itoa(xnum, digit3);     // Zahlen in String umwandeln
                                      itoa(ynum, digit4);                                          
                                      touchLocation.x = 0;                                  
                                      touchLocation.y = 0;
                                      status = 2;
                                      SDL_Delay ( 5 );
                                      break; 
    
                              case SDL_FINGERMOTION:                                  
                                      touchLocation.x = test_event.tfinger.x * gScreenRect.w; 
                                      touchLocation.y = test_event.tfinger.y * gScreenRect.h;
                                      status = 3;      
                                      SDL_Delay ( 5 );   
                                      break; 
    
                              default:
                                      break;
    
                              }
                    }
    
                 xnum = touchLocation.x; // Vorbereiten für itoa
                 ynum = touchLocation.y;   
    
                 itoa(xnum, digit1);     // Zahlen in String umwandeln
                 itoa(ynum, digit2);        
    
                 if (status == 1) {
                 SDL_Color color = { 255, 0, 0, 255 };   // RGB
                 text = TTF_RenderText_Blended(font, "DOWN", color);   // Text
                 SDL_Rect rect6 = { 105, 94, 84, 74 };   // Textposition
                 sdlTexture = SDL_CreateTextureFromSurface (sdlRenderer, text);   // Bild in Textur
                 SDL_RenderCopy(sdlRenderer, sdlTexture, 0, &rect6);   // Render Textur
                 }                    
                 else if (status == 2) {
                 SDL_Color color = { 0, 255, 0, 255 };   // RGB
                 text = TTF_RenderText_Blended(font, " UP ", color);   // Text
                 SDL_Rect rect7 = { 105, 94, 84, 74 };   // Textposition
                 sdlTexture = SDL_CreateTextureFromSurface (sdlRenderer, text);   // Bild in Textur
                 SDL_RenderCopy(sdlRenderer, sdlTexture, 0, &rect7);   // Render Textur 
                 }
                 else if (status == 3) {
                 SDL_Color color = { 0, 0, 255, 255 };   // RGB
                 text = TTF_RenderText_Blended(font, "MOVE", color);   // Text
                 SDL_Rect rect8 = { 105, 94, 84, 74 };   // Textposition
                 sdlTexture = SDL_CreateTextureFromSurface (sdlRenderer, text);   // Bild in Textur
                 SDL_RenderCopy(sdlRenderer, sdlTexture, 0, &rect8);   // Render Textur       
                 }
    
                 SDL_Color color = { 255, 140, 0, 255 };   // RGB
    
                 text = TTF_RenderText_Blended(font, "TPoint: ", color);   // Text
                 SDL_Rect rect0 = { 14, 14, 84, 74 };   // Textposition
                 sdlTexture = SDL_CreateTextureFromSurface (sdlRenderer, text);   // Bild in Textur
                 SDL_RenderCopy(sdlRenderer, sdlTexture, 0, &rect0);   // Render Textur       
    
                 text = TTF_RenderText_Blended(font, "Status: ", color);   // Text
                 SDL_Rect rect5 = { 14, 94, 84, 74 };   // Textposition
                 sdlTexture = SDL_CreateTextureFromSurface (sdlRenderer, text);   // Bild in Textur
                 SDL_RenderCopy(sdlRenderer, sdlTexture, 0, &rect5);   // Render Textur       
    
                 text = TTF_RenderText_Blended(font, "X: ", color);   // Text
                 SDL_Rect rect1 = { 95, 15, 30, 30 };   // Textposition
                 sdlTexture = SDL_CreateTextureFromSurface (sdlRenderer, text);   // Bild in Textur
                 SDL_RenderCopy(sdlRenderer, sdlTexture, 0, &rect1);   // Render Textur       
    
                 text = TTF_RenderText_Blended(font, "Y: ", color);   // Text
                 SDL_Rect rect2 = { 95, 50, 30, 30 };   // Textposition
                 sdlTexture = SDL_CreateTextureFromSurface (sdlRenderer, text);   // Bild in Textur
                 SDL_RenderCopy(sdlRenderer, sdlTexture, 0, &rect2);   // Render Textur
    
                 text = TTF_RenderText_Blended(font, digit1, color);   // Text
                 SDL_Rect rect3 = { 140, 15, 30, 30 };   // Textposition
                 sdlTexture = SDL_CreateTextureFromSurface (sdlRenderer, text);   // Bild in Textur
                 SDL_RenderCopy(sdlRenderer, sdlTexture, 0, &rect3);   // Render Textur
    
                 text = TTF_RenderText_Solid(font, digit2, color);   // Text
                 SDL_Rect rect4 = { 140, 50, 30, 30 };   // Textposition
                 sdlTexture = SDL_CreateTextureFromSurface (sdlRenderer, text);   // Bild in Textur
                 SDL_RenderCopy(sdlRenderer, sdlTexture, 0, &rect4);   // Render Textur             
    
                 text = TTF_RenderText_Solid(font, "LastTP:", color);   // Text
                 SDL_Rect rect9 = { 14, 174, 84, 74 };   // Textposition
                 sdlTexture = SDL_CreateTextureFromSurface (sdlRenderer, text);   // Bild in Textur
                 SDL_RenderCopy(sdlRenderer, sdlTexture, 0, &rect9);   // Render Textur             
    
                 text = TTF_RenderText_Solid(font, "X: ", color);   // Text
                 SDL_Rect rect10 = { 105, 174, 30, 30 };   // Textposition
                 sdlTexture = SDL_CreateTextureFromSurface (sdlRenderer, text);   // Bild in Textur
                 SDL_RenderCopy(sdlRenderer, sdlTexture, 0, &rect10);   // Render Textur             
    
                 text = TTF_RenderText_Solid(font, "Y: ", color);   // Text
                 SDL_Rect rect11 = { 105, 210, 30, 30 };   // Textposition
                 sdlTexture = SDL_CreateTextureFromSurface (sdlRenderer, text);   // Bild in Textur
                 SDL_RenderCopy(sdlRenderer, sdlTexture, 0, &rect11);   // Render Textur             
    
                 text = TTF_RenderText_Blended(font, digit3, color);   // Text
                 SDL_Rect rect12 = { 140, 175, 30, 30 };   // Textposition
                 sdlTexture = SDL_CreateTextureFromSurface (sdlRenderer, text);   // Bild in Textur
                 SDL_RenderCopy(sdlRenderer, sdlTexture, 0, &rect12);   // Render Textur
    
                 text = TTF_RenderText_Solid(font, digit4, color);   // Text
                 SDL_Rect rect13 = { 140, 210, 30, 30 };   // Textposition
                 sdlTexture = SDL_CreateTextureFromSurface (sdlRenderer, text);   // Bild in Textur
                 SDL_RenderCopy(sdlRenderer, sdlTexture, 0, &rect13);   // Render Textur             
    
                 SDL_FreeSurface(text); // Speicher für Textsurface frei machen
    
                 SDL_RenderClear(sdlRenderer);
    
                 SDL_RenderPresent(sdlRenderer); // Update Screen
    
                 SDL_Delay ( 100 );
          }
    
        cleanup();     //Aufräumen      
    
    }
    


  • Die von beiden Versionen benutzte eigene headerdatei itoa.h

    #include <math.h>
    #include <stdio.h>
    
    // int num2[];
    // int num = 54;
    
    // main()
    // {
    // printf ("num = %c \n", num);
    
    // itoa(num, num2);
    
    // printf ("num2 = %s", num2);
    // }
    
    // char* itoa(int num)
    // { 
    //     /* log10 (num) gibt die anzahl von stellen an; +1 für den \0 terminator */
    //     int size = log10(num) + 1;
    //     char *z = malloc(size);
    //     snprintf(z, size, "%d", num);
    // }  
    
    int reverse(s)          /* s an Ort und Stelle umkehren */
    char s[];
    {
              int c, i, j;
    
              for (i = 0, j = strlen(s)-1; i < j; i++, j--) {
                      c = s[i];
                      s[i] = s[j];
                      s[j] = c;
              }
    }
    
    int itoa(n, s)          /* n in Zeichenkette s umwandeln */
    char s[];
    int n;
    {
            int i, sign;
    
            if ((sign = n) < 0)          /* Vorzeichen notieren */
                    n = -n;                   /* n positiv machen */
            i = 0;
            do {                               /* Ziffern von rechts her generieren */
                    s[i++] = n % 10 + '0';        /* nächste Ziffer */
            } while ((n /= 10) > 0);             /* entfernen */
            if (sign < 0)
                    s[i++] = '-';
            s[i] = '\0';
            reverse(s);
    }
    
    void cleanup(void)
    {
        SDL_DestroyWindow(sdlWindow);
        SDL_DestroyTexture(sdlTexture);
        // SDL_DestroyTexture(tempTexture);
        //IMG_Quit();
        TTF_Quit();
        SDL_DestroyRenderer(sdlRenderer);
        SDL_Quit();
       // return 0;
    }
    


  • Compiler Output:

    /data/data/com.n0n3m4.droidc/files/temp.c:26:1: warning: return type defaults to 'int'
    main()
    ^
    /data/data/com.n0n3m4.droidc/files/temp.c: In function 'main':
    /data/data/com.n0n3m4.droidc/files/temp.c:207:21: warning: passing argument 2 of 'TTF_RenderText_Blended' from incompatible pointer type
    text = TTF_RenderText_Blended(font, digit1, color); // Text
    ^
    In file included from /data/data/com.n0n3m4.droidc/files/temp.c:14:0:
    /data/data/com.n0n3m4.droidc/files/gcc/arm-linux-androideabi/include/SDL2/SDL_ttf.h:203:39: note: expected 'const char *' but argument is of type 'int *'
    extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_Blended(TTF_Font *font,
    ^
    /data/data/com.n0n3m4.droidc/files/temp.c:213:21: warning: passing argument 2 of 'TTF_RenderText_Solid' from incompatible pointer type
    text = TTF_RenderText_Solid(font, digit2, color); // Text
    ^
    In file included from /data/data/com.n0n3m4.droidc/files/temp.c:14:0:
    /data/data/com.n0n3m4.droidc/files/gcc/arm-linux-androideabi/include/SDL2/SDL_ttf.h:160:39: note: expected 'const char *' but argument is of type 'int *'
    extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_Solid(TTF_Font *font,
    ^
    /data/data/com.n0n3m4.droidc/files/temp.c:241:21: warning: passing argument 2 of 'TTF_RenderText_Blended' from incompatible pointer type
    text = TTF_RenderText_Blended(font, digit3, color); // Text
    ^
    In file included from /data/data/com.n0n3m4.droidc/files/temp.c:14:0:
    /data/data/com.n0n3m4.droidc/files/gcc/arm-linux-androideabi/include/SDL2/SDL_ttf.h:203:39: note: expected 'const char *' but argument is of type 'int *'
    extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_Blended(TTF_Font *font,
    ^
    /data/data/com.n0n3m4.droidc/files/temp.c:247:21: warning: passing argument 2 of 'TTF_RenderText_Solid' from incompatible pointer type
    text = TTF_RenderText_Solid(font, digit4, color); // Text
    ^
    In file included from /data/data/com.n0n3m4.droidc/files/temp.c:14:0:
    /data/data/com.n0n3m4.droidc/files/gcc/arm-linux-androideabi/include/SDL2/SDL_ttf.h:160:39: note: expected 'const char *' but argument is of type 'int *'
    extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_Solid(TTF_Font *font,
    ^
    /data/data/com.n0n3m4.droidc/files/temp.c: At top level:
    /data/data/com.n0n3m4.droidc/files/temp.c:19:5: warning: array 'digit1' assumed to have one element
    int digit1[], digit2[], digit3[], digit4[];
    ^
    /data/data/com.n0n3m4.droidc/files/temp.c:19:15: warning: array 'digit2' assumed to have one element
    int digit1[], digit2[], digit3[], digit4[];
    ^
    /data/data/com.n0n3m4.droidc/files/temp.c:19:25: warning: array 'digit3' assumed to have one element
    int digit1[], digit2[], digit3[], digit4[];
    ^
    /data/data/com.n0n3m4.droidc/files/temp.c:19:35: warning: array 'digit4' assumed to have one element
    int digit1[], digit2[], digit3[], digit4[];
    ^



  • Nur zwei kleine Sachen ohne den Code wirklich begutachtet zu haben: Warum implementierst du deine eigene Variante von itoa? Siehe: http://www.cplusplus.com/reference/cstdlib/itoa/
    Und: Warum sind digit1, etc. int-Arrays, wenn sie doch einen String aufnehmen sollen?



  • Muss ich irgendwo irgendwie den Speicher separat wider frei machen oder sowas? Steh da wie n Ochse vor nem Berg.

    Sorry für so viel Text...

    Anderes Equipment kann ich mir z.Z. nicht leisten. Und ich bitte um Geduld, falls noch Fragen sind, da ich nicht jeden Tag die Möglichkeit habe online zu gehen. Ich bin auf jeden Fall sehr dankbar für jeden Hinweis, jede Idee und jede Hilfestellung die ich bekommen kann!

    Danke im voraus! 🙂 🙂 🙂

    ;



  • Da du keinen Speicher direkt allokiert (angefordert) hast (über malloc, calloc, etc), musst du auch nichts frei machen. Die verschiedenen Datentypen sind dir nicht geläufig, kann das sein?

    Die Frage nach itoa bleibt. Ich weiß auch nicht so recht, was du mit Equipment meinst. Du hast einen Compiler, das reicht eigentlich auch schon aus (fürs Testing wäre natürlich ein Android-fähiges Gerät sinnvoll bzw. ein entsprechender Emulator).



  • Muss ich irgendwo irgendwie den Speicher separat wider frei machen oder sowas?

    Vor allen Dingen musst du erstmal überhaupt Speicher anfordern, Zeile 9 ist großer Müll.

    da ich nicht jeden Tag die Möglichkeit habe online zu gehen

    Schreibt Programme für Android und hat nicht die Möglichkeit, Online zu gehen.
    Schon lange nicht mehr solchen Müll gesehen.
    Troll.



  • Das hat mit privaten umständen bzw. lebensstiel zu tun. Für die meisten hier lebe ich warscheinlich hinter dem Mond. Das macht mich noch lange nicht zu einem Trol. Eben so wenig wie der umstand, das ich nicht viel ahnung habe. Was ich, wie der Nick vermuten läst nicht versuche zu verheimlichen. Aber trotzdem danke.



  • @ FoE
    Du hast recht. Habe ich nicht. Damit sollte ich mich erstmal beschäftigen richtig?



  • Am besten ein Tutorial oder besser gleich ein Buch zur Einführung lesen, verstehen und versuchen alles nachzumachen und herumzuexperimentieren. Entsprechende Buchempfehlungen und Linklisten gibt's hier im Forum.



  • Für was soll ich denn bitte sonst programme schreiben, wenn ich kein anderes Equip habe?

    Und natürlich weiss ich wofür die verschiedenen Datentypen stehen, aber habe mit der umwandlung probleme. es werden ja zahlen durch dir berührung erzeugt, ich brauche aber strings um sie mit SDL_ttf zu zeigen.

    Kann das aber meinen Absturz verursachen?


  • Mod

    -NoOoB- schrieb:

    @ FoE
    Du hast recht. Habe ich nicht. Damit sollte ich mich erstmal beschäftigen richtig?

    Ja, es soll ganz nützlich sein, die Sprache zu beherrschen, die man benutzt 🙂

    Gerade C ist ziemlich unverzeihlich, was selbst kleinste Fehler und Ungenauigkeiten angeht. Zumal einem Kenntnisse anderer Sprachen oder allgemeine Intuition in C öfters fehl leiten, muss man schon genau wissen, was man tut. C ist letztlich eine Sprache von Profis für Profis und eher ungeeignet für zufälliges Herumexperimentieren.

    Zu deinen Problemen, solltest du erst einmal alle Warnungen des Compilers wie Fehler behandeln. Der Compiler spricht besser C als du und kann jede Menge Unsinn erkennen, auch wenn dieser Unsinn streng genommen legales C ist (weswegen der Compiler nur warnt, dass etwas komisch aussieht, aber kein Fehler ist).

    Und natürlich weiss ich wofür die verschiedenen Datentypen stehen, aber habe mit der umwandlung probleme.

    Nein, du weißt nicht genug über Datentypen, das zeigt direkt der zweite Teil deines Satzes.

    Kann das aber meinen Absturz verursachen?

    Natürlich kann es das. Schließlich versuchst du Daten so zu benutzen, als wären sie komplett andere Daten. Was sollte sonst passieren? Eine magische Umwandlung?

    Aber es heißt nicht, dass dies das einzige Problem in deinem Code wäre.



  • Muss morgen sehr früh raus und bin auch mehr als müde...
    Ich denke ich schaff es morgen abend wider hier zu schaun. Für alle die bis dahin hier sinnvolle posts LEISTEN:

    DANKE!!!



  • Ok, krit angenommen. Dann bring ich euch nehme ich an mit meiner letzten frage für heute richtig zum lachen.

    Wo lerne ich denn am besten, was mein compiler mir sagt?

    Bin dank C4Droid ide verwöhnt und habe keine ahnung wie ich die compiler output informationen nutzen/umsetzen kann...

    Bisher hab ich alles andere (ohne SDL) immer erraten. keine Probleme.

    Also, gute nacht und bis morgen...


  • Mod

    Wo lerne ich denn am besten, was mein compiler mir sagt?

    Lesen? Der GCC hat doch extrem hilfreiche Fehlermeldungen. Clang hat auch sehr gute, eventuell sogar bessere. Aber so etwas wie

    /data/data/com.n0n3m4.droidc/files/temp.c: In function 'main':
    /data/data/com.n0n3m4.droidc/files/temp.c:207:21: warning: passing argument 2 of 'TTF_RenderText_Blended' from incompatible pointer type
                  text = TTF_RenderText_Blended(font, digit1, color);   // Text
                         ^
    In file included from /data/data/com.n0n3m4.droidc/files/temp.c:14:0:
    /data/data/com.n0n3m4.droidc/files/gcc/arm-linux-androideabi/include/SDL2/SDL_ttf.h:203:39: note: expected 'const char *' but argument is of type 'int *'
     extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_Blended(TTF_Font *font,
    

    ist doch wohl ziemlich eindeutig. Es nennt dir den Ort (In function 'main', temp.c, Zeile 207, Spalte 21); den Grund (passing argument 2 of 'TTF_RenderText_Blended' from incompatible pointer type); zeigt noch einmal genau die Stelle; und gibt dann noch einen hilfreichen Hinweis, wo die unpassende Stelle steht (SDL_ttf.h (included von temp.c Zeile 14, Spalte 0), Zeile 203, Spalte 39); was dort steht; und was da dran nicht passt (expected 'const char *' but argument is of type 'int *'). Was willst du da noch mehr? Du wirst ja geradezu überschüttet mit Hinweisen, was das Problem ist.



  • /data/data/com.n0n3m4.droidc/files/temp.c: At top level:
    /data/data/com.n0n3m4.droidc/files/temp.c:19:5: warning: array 'digit1' assumed to have one element
    int digit1[], digit2[], digit3[], digit4[];
    ^
    /data/data/com.n0n3m4.droidc/files/temp.c:19:15: warning: array 'digit2' assumed to have one element
    int digit1[], digit2[], digit3[], digit4[];
    ^
    /data/data/com.n0n3m4.droidc/files/temp.c:19:25: warning: array 'digit3' assumed to have one element
    int digit1[], digit2[], digit3[], digit4[];
    ^
    /data/data/com.n0n3m4.droidc/files/temp.c:19:35: warning: array 'digit4' assumed to have one element
    int digit1[], digit2[], digit3[], digit4[];

    deine Arrays haben keinen Speicherplatz d.h. du schreibst schoen ueber deinen Speicher drueber mit Random-Absturz-Ergebnis nach Zeit x - deine Kompiler-Warnungen sagen das ueberdeutlich - solange da Warnungen kommen ist was falsch - und einfach den Fehler weg-casten wird dir nicht helfen



  • deine Arrays haben ein int Speicher - aber die ganze "alte" Schreibweise ist echt verwirrend

    jetzt machst du ein neues Programm und bringst Stück für Stück kleine Teile aus deinem jetzigen da hin - zwischen jedem Teil schön lange testen

    1. SDL-Initialisierung
    2. erstmal nur die puren Werte vom Touch holen
    3. Ausgabe

    jeden Schritt einzeln Testen, Warnung nicht akzeptieren und sauber lösen - dann läuft dein Programm bald - jetzt sind es gerade zu viele Fehler auf einmal



  • clear = SDL_LoadBMP("resources/startbild.bmp");

    wo ist das FreeSurface dazu? könnte in der while-Schleife auch ganz schön Resourcen braucen



  • TTF_RenderText_... liefern immer eine NEUE Surface - du gibts nur eine davon (die letzte) frei

    text = TTF_RenderText_Blended(font, digit1, color); hier wird ein char* String erwartet - du gibts einfach einen int rein???

    usw, usw, usw



  • Oh man, da hab ich ja erstmal gut was zu tun 🙂 ... vielen Dank dafür!

    -Also ich werde den Rat beherzigen, das Ganze neu von Begin zusammen zu puzzeln und ausgiebig zu testen.

    -Und natürlich zieh ich mir Datentypen nochmal genauer zu Gemüt.

    -Copileroutput (warnung) wird ab sofort nicht mehr toleriert.

    Auch meine anderen Programme werden da durch müssen 😉 (also wirklich viel zu tun)...

    -----------------------------------------------------------------------

    Meine "alte" schreibweise kommt bestimmt aus dem K&R-Buch, tut mir leid dafür. Wo bekomme ich ein/en Beispiel/Einblik in "aktuellem" Stil?

    Bei dem Textsurface... heuft sich also Müll im ram an, wenn ich es nicht direckt nach der Nutzung sondern erst am Ende nach allen Nutzungen frei mache?

    Und meine Zeile 9... das ich den Datentyp int benutzt habe war so eine art Kettenreaktion. Ich hab es echt erst mit strings probiert, aber das hat (irgendwie (sorry)) nicht funktioniert. Weiss -natürlich- nicht warum. Hab auch noch andere Wege versucht und (für mich) hatte nur dieser so funktioniert. (Wollte also die ints aus den Koordinaten direkt in strings umwandeln (casten?))
    Das heisst, wenn ich mein Programm ausseinander nehme und testend neu zusammen füge, werde ich trozdem dieses Verständnissproblem immernoch haben. Also, wie gehe ich besser mit genau DIESEM Problem/Fehler um?

    Ja ich weiss, erschiessen! Aber das ist mir zu radikal.
    itoa als Funktion brauche ich dabei trotzdem; richtig?


Anmelden zum Antworten