Filebrowser Problem

flasher
Developer
Beiträge: 467
Registriert: Dienstag 15. Juli 2003, 10:58

Filebrowser Problem

Beitrag von flasher »

Hallo

Ich habe ein seltsames Problem mit dem Filebrowser.
Ich möchte den gerne aufrufen um damit eine Datei auszusuchen die später dann geöffnet werden soll.

Bei mir sieht das so aus:

Code: Alles auswählen

	CFileBrowser filebrowser("");

	filebrowser.Multi_Select    = false;
	filebrowser.Dirs_Selectable = false;

	CFileList list;

	if (filebrowser.exec(Path.c_str()))
	{
		Path = filebrowser.getCurrentDir();
		CFile *fn = filebrowser.getSelectedFile();
		list.clear();
		list.push_back(*fn);
	}

	std::string fname = list[0].getFileName();
	char *tmp = "";
	sprintf(tmp, "%s", fname.c_str());
	readFile(tmp);
Ruf ich dies nun auf, dann erscheint nur die Headerzeile des Filebrowsers und dann gibt es ein SegFault.

Mal abgesehen ob das dort oben funktioniert oder nicht, funktioniert der Filebrowser dann Systemweit nicht mehr.
(Moviebrowser, Bildbetrachter u.s.w)
Nehme ich die Zeilen dort oben wieder raus, dann funktioniert der Filebrowser Systemweit wieder.

Ich frage mich nun was ist daran falsch bzw. woran liegt es, dass durch dieses Stück Code der Filebrowser in anderen Menüs auch nicht funktioniert.

Gruß
wittinobi
Einsteiger
Einsteiger
Beiträge: 116
Registriert: Montag 29. März 2004, 22:00

Beitrag von wittinobi »

fehlt da nicht noch ein "else" ?
flasher
Developer
Beiträge: 467
Registriert: Dienstag 15. Juli 2003, 10:58

Beitrag von flasher »

Ich denke nicht, dass da noch ein else fehlt.
Es muss ja nicht gezwungener Maßen etwas passieren wenn der Return nicht true ist.

Hier würde es eventuell ein SegFault geben wenn list leer ist:
std::string fname = list[0].getFileName();

Soweit kommt es aber nicht. Der Filebrowser müsste ja zumindest aufgehen und nicht direkt nach dem Header ein SegFault produzieren.

Gruß