HeightMap - warum hängt das?
-
Ich hab unten mal meine Funktion zum Darstellen meiner HeightMap abgelistet.
Aus irgend einem Grund hängt sich der Mist aufMein View ist ein char[] der Größe FileHeader.SizeOfKachel².
Ich versteh echt nicht, warum das Ding mir abschmiert...die Funktion war doch okay.
siehe nächstes Posting:
-
Hab das Problem mehr oder weniger gelöst :
Diese function ist okay.
sllerdings hab ich nen Problem beim Auslesen meiner Config - Datei.
die Funtion hierzu sieht so aus (ziemlich unsauber, aber ausreichend)void C_glWin::LoadConfig(char *ConfigFile) { FILE *F; char Text[255]; char *Parameter, *Value; F = fopen (ConfigFile, "r"); if ( F != NULL) { while (!feof(F)) { fgets(Text, 255, F); if ( strchr( Text, '[') == NULL) { Parameter = strtok (Text, " "); Value = strtok (NULL, " "); if ( strcmp (Parameter, "HEIGHT") == 0 ) Config.ScreenHeight = atoi(Value); else if ( strcmp (Parameter, "WIDTH") == 0 ) Config.ScreenWidth = atoi(Value); else if ( strcmp (Parameter, "FULLSCREEN") == 0 ) Config.FullScreen = atoi(Value); else if ( strcmp (Parameter, "BITS") == 0 ) Config.ScreenBits = atoi(Value); else if ( strcmp (Parameter, "TERRAIN") == 0 ) strcpy (Config.TerrainPath, Value); } } fclose(F); } else { MessageBox( NULL, "Keine Config-Daten! \nBenutze Defaults." , "Initialisierungsfehler", MB_OK); Config.FullScreen = 1; Config.ScreenBits = 32; Config.ScreenHeight = 600; Config.ScreenWidth = 800; strcpy(Config.TerrainPath, "c:\\temp\\terrain\\terrain1.maf"); } }
wenn ich die information aus der Configdatei lade, kann ich meinen terrain nicht laden. gebe ich die Datei explizit an, klapts..
strcpy(Config.TerrainPath, "c:\\temp\\terrain\\terrain1.maf");
Die Config - Datei sieht so aus:
[SCREEN] WIDTH 800 HEIGHT 600 BITS 32 FULLSCREEN 0 [PATH] TERRAIN c:/temp/terrain/terrain1.maf [SOUND]
was hab ich hier schon wieder falsch gemacht??
(hab nur nen paar Monate dsa coden aus der Hand gelegt
)
-
Hallo.
Ohne den Code zu lesen :DocJunioR schrieb:
[SCREEN] WIDTH 800 HEIGHT 600 BITS 32 FULLSCREEN 0 [PATH] TERRAIN [b]c:/temp/terrain/terrain1.maf[/b] [SOUND]
Sagt dir das fettgeschriebene was ?
mfg BlueShift
-
das ist in C okay so.
mit \ oder \\ gehts auch nicht.
-
Das ist jetzt aber albern
Windoof benutzt als Zeilenumbruch \r\n
Nen normaler String wird aber mit \n terminiert.
Im Endeffekt sucht mein Programm also die Datei"c:\\temp\\terrain\\terrain1.maf**\r**"
die es natürlich nicht gibt.
Das Problem hab ich erstmal dadurch gelöst, dass ich hinter meinen Dateinamen in der Config-Datei nen Leerzeichen gesetzt hab. strtok() ersetzt dies dann automatisch durch nen \n..
-
nebenbei: um ini Dateien auszulesen kann man unter Windows auch Funktionen
á la GetPrivateProfileString verwenden. Das macht sich dann sehr viel schöner.Genaueres hier:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getprivateprofilestring.aspViele Grüße
Fischi
-
@DocJunioR:
Ein String wird mit \0 terminiert. Und schau mal in der fopen-Doku unter Binär und Text-Modus.Bye, TGGC (Zu viele Primitive hier.)
-
hast ja recht, TGGC. hab mich etwas wurschtig ausgedrückt..
-
DocJunioR schrieb:
hast ja recht, TGGC. hab mich etwas wurschtig ausgedrückt..
Ich würde eher sagen, du hattest nicht verstanden, was da genau passierte. Mal die Doku zu den Dateifunktionen gelesen.
Bye, TGGC (Zu viele Primitive hier.)