Anzeige:
Ergebnis 1 bis 6 von 6

Thema: var undeclared/not declared in this scope

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.10.2002
    Beiträge
    55

    var undeclared/not declared in this scope

    Code:
    if(!strcmp(dateiendung, "tga"))
    {
     FILE *hDatei = fopen(filename, "rb");
     if(hDatei == NULL) return FALSE;
    
     TGA tga;
     TGAHeader tgaheader;
      
     GLubyte uTGAcompare[12] = {0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     GLubyte cTGAcompare[12] = {0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    
     if(!fread(&tgaheader, sizeof(TGAHeader), 1, hDatei))
      return FALSE;
     if(!fread(&tga, sizeof(TGAHeader), 1, hDatei))
      return FALSE;
      
     wWidth = tga.header[1] * 256 + tga.header[0];
     wHeight = tga.header[3] * 256 + tga.header[2];
     bbitCount = tga.header[4];
     tga.Width = wWidth;
     tga.Height = wHeight;
     tga.Bpp = bbitCount;
    
     if((wWidth <= 0) || (wHeight <= 0) || ((bbitCount != 24) && (bbitCount != 32)))
      return FALSE;
    
     if(!memcmp(uTGAcompare, &tgaheader, sizeof(tgaheader)))
     {
      if(fread(filedata, 1, tga.imageSize, hDatei) != tga.imageSize)
       return FALSE;
     }
     else if(!memcmp(cTGAcompare, &tgaheader, sizeof(tgaheader))
     {
      GLuint pixelcount = tga.Width * tga.Height;
      GLuint currentpixel = 0, currentbyte = 0;
      GLubyte *colorbuffer = (GLubyte*)malloc(tga.bytesPerPixel);
    
      do
      {
       GLubyte chunkheader = 0;
       if(!fread(&chunkheader, sizeof(GLubyte), 1, hDatei))
        return FALSE;
    
       if(chunkheader < 128)
       {
        chunkheader++;
        for(short counter = 0; counter < chunkheader; counter++)
        {
         if(fread(colorbuffer, 1, tga.bytesPerPixel, hDatei) != tga.bytesPerPixel)
          return FALSE;
    
         filedata[currentbyte] = colorbuffer[0];
         filedata[currentbyte + 1] = colorbuffer[1];
         filedata[currentbyte + 2] = colorbuffer[2];
    
         if(tga.bytesPerPixel == 4)
          filedata[currentbyte + 3] = colorbuffer[3];
    
         currentbyte += tga.bytesPerPixel;
         currentpixel++;
        }
       }
       else
       {
        chunkheader -= 127;
        if(fread(colorbuffer, 1, tga.bytesPerPixel, hDatei) != tga.bytesPerPixel)
         return FALSE;
    
        for(short counter = 0; counter < chunkheader; counter++)
        {
         if(tga.bytesPerPixel == 4)
          filedata[currentbyte + 3] = colorbuffer[3];
    
         currentbyte += tga.bytesPerPixel;
         currentpixel++;
        }
       }
      }while(currentpixel < pixelcount); // pixelcount undeclared
     }
     else return FALSE;
     fclose(hDatei); // hDatei undeclared
    }
    unter windows läuft das so
    wenn ich es aber unter linux kompiliere, sagt der compiler, dass hDatei und pixelcount nicht deklariert ist (in den letzten Zeilen im Code)
    aber ich seh doch mit bloßem auge, dass ich es deklariert hab
    das ist genau wie bei den fehlern "var is not declared in this scope", damit ich komm ich auch nicht so ganz klar

    ich wäre sehr froh, wenn mir jemand diese sachen erklären könnte/mir jemand helfen könnte!

  2. #2
    Registrierter Benutzer Avatar von DanDanger
    Registriert seit
    15.12.2001
    Ort
    /home/dandanger
    Beiträge
    130
    Hi,

    also ich würde mal versuchen, hDatei und Pixelcount vor der
    Code:
    if(!strcmp(dateiendung, "tga"))
    .....
    Abfrage (also vor der Funktion) zu deklarieren.

    Wenn das nicht hilft :
    Da Du scheinbar was mit OpenGL machst (TGA's als Texturen laden, stimmts? ),
    kann ich Dir folgende Link's empfehlen :

    http://nehe.gamedev.net
    http://www.gamedev.net
    http://www.flipcode.com
    http://cone3d.gamedev.net
    http://www.gametutorials.com
    http://www.OpenGL.org

    Da gibt's auch Tonnenweise Beispiele, wie man Bitmaps, TGA's, JPEG's, etc.
    in OpenGL lädt.


    Gruss
    DanDanger
    ------------------------------------
    DanDanger

  3. #3
    Registrierter Benutzer
    Registriert seit
    02.10.2002
    Beiträge
    55
    danke
    die ogl sachen sind ja nicht das problem, nur eben, dass der "linux"-compiler deklarationen von variablen innerhalb von irgendwelchen schleifen nicht mag

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von Camel69
    danke
    die ogl sachen sind ja nicht das problem, nur eben, dass der "linux"-compiler deklarationen von variablen innerhalb von irgendwelchen schleifen nicht mag
    Das hängt von den Compilerflags ab.
    Wenn du -ansi oder -pedantic verwendest, ist das nicht gültig, weil da alle Variablen am Anfang der Funktion deklariert werden müssen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    02.10.2002
    Beiträge
    55
    sind glaube ich nicht gesetzt...verwendet kdevelop standartmäßig sowas?

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von Camel69
    sind glaube ich nicht gesetzt...verwendet kdevelop standartmäßig sowas?
    Glaube nicht.
    Aber ich benutze immer C++, da ist so etwas immer gültig.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •