c++ seltsames dateiproblem

KAY

Mitglied
hallo zusammen.

ich hab ein (mir unverständliches problem).
ein prog (editor für 2D-Karte) speichert die Daten der Karte in eine binäre Datei. Die kann ich auch wieder auslesen und die Karte wird richtig dargestellt. Nun hat das ganze einen Haken.
Es funktioniert nur wenn ich die Dateien im selben Ordner lasse, also angenommen ich nehme die exe, die map und die gfx-Dateien und packe die in einen anderen ordner. dann geht gar nix mehr...

ich kann neue karten erstellen und diese laden, aber die "alten" aus dem "alten Ordner" nicht mehr....
 
kann ich mir irgendwie garnicht vorstellen.. hm..
vieleicht solltest du mal ein stück code posten, von dem laden und speichern...
vieleicht schreibt er was in die datei, was da garnicht rein soll?!
 
ja mach ich:

hier die map-deklaration:

Code:
struct Felder
{
LPDIRECTDRAWSURFACE7 Surf1;
LPDIRECTDRAWSURFACE7 Surf2;
LPDIRECTDRAWSURFACE7 Surf3;
RECT rechteck;
};

Felder Map[51][51];

jo und dann speichern:
Code:
FILE* save;
bool Save()
{
	save=fopen(Kartenname,"w");
	for(int a=0;a<51;a++)
	{
		for(int b=0;b<51;b++)
		{
			fwrite(&Map[a][b].Surf1,sizeof(Map[a][b].Surf1),1,save);
			fwrite(&Map[a][b].Surf2,sizeof(Map[a][b].Surf2),1,save);
			fwrite(&Map[a][b].Surf3,sizeof(Map[a][b].Surf3),1,save);
			fwrite(&Map[a][b].rechteck,sizeof(Map[a][b].rechteck),1,save);
		}	
	}
	fclose(save);
	return true;
}

und laden:

Code:
FILE* load;
bool Load()
{	
	
	load=fopen(Kartenname,"r");

	for(int a=0;a<51;a++)
	{
		for(int b=0;b<51;b++)
		{
			fread(&Map[a][b].Surf1,sizeof(Map[a][b].Surf1),1,load);
			fread(&Map[a][b].Surf2,sizeof(Map[a][b].Surf2),1,load);
			fread(&Map[a][b].Surf3,sizeof(Map[a][b].Surf3),1,load);
			fread(&Map[a][b].rechteck,sizeof(Map[a][b].rechteck),1,load);
		}	
	}
	fclose(load);
	render();
	return true;
}

aber wie gesagt, speichern und laden geht ja, aber nur in ein und demselben ordner
 
Versuch doch mal den Teil der nicht so geht mut dem Debugger zu durchlaufen und schau mal was da in Kartenname drin steht, dort sollte nämlich der absolute Pfad zu der Datei drin stehen.
Außerdem würde ich in beiden Funktionen laden/speichern abfragen ob der FILE-pointer NULL ist:

Code:
save=fopen(Kartenname,"w");
if(!save)
  return false;

Gruss Homer
 
Zurück