Geschwindigkeit Optimieren ?
-
Hi, ich verwende Visual C++ 2008 (Express)
Ich habe folgende Funktionen:
std::string openFile(std::string path) { std::string filename; //... OpenFileDialog return filename; } int main() { std::string file=openFile("c:\test.txt"); return 0; }Wenn ich Geschwindigkeit optimieren ausschalte, klappt alles.
Wenn ich es jedoch einschalte, ist "file" nicht mehr der Dateiname, sondern irgendwie uninitialisiert...
Woran könnte das liegen ?
-
Auf jeden Fall ist da ein Fehler, das sollte C:\\test.txt heißen. Also Doppel-Backslash. Sonst kann ich nichts erkennen, recht viel ist ja auch nicht da.
MfG SideWinder
-
es ist immer sehr hilfreich den wichtigen teil weg zu lassen
-
Auf jeden Fall ist da ein Fehler, das sollte C:\\test.txt heißen. Also Doppel-Backslash.
Ups, da habe ich mich wohl vertan, die Funktion soll natürlich einen Dateiname bekommen, keinen erwarten

// Returns an empty string if dialog is canceled void openfilename(char* filter,char*Title,char*path ) { OPENFILENAME ofn; char* fileName = path; fileName[0]='\0'; ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = g_window->hWnd; ofn.lpstrFilter = filter; ofn.lpstrFile = fileName; ofn.nMaxFile = MAX_PATH; ofn.Flags = OFN_FILEMUSTEXIST ; //ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; ofn.lpstrTitle=Title; ofn.lpstrDefExt = ""; int err=GetOpenFileName(&ofn) ; } std::string OpenFileDialog(char* filter,char*Title) { char fileName[MAX_PATH]; openfilename(filter,Title,fileName); std::string file=fileName; int i=0; return file; }Error Handling habe ich hier noch nicht...
Aufruf:
std::string File=OpenFileDialog("DarkEngine Models (*.DEm)\0*.Dem\0","Select a Model:");Es scheint doch zu gehen, bei optimierter Geschwindigkeit kann der nur nicht die Werte richtig anzeigen ><
Der Fehler lag scheinbar in der Ladefunktion, danach habe ich die Geschwindigkeits-Optimierung aus gelassen...
Nochwas, wenn ich in dem FileDialog auf den Arbeitsplatz gehe, ist diese leer, äußerst unpraktisch ><
Wie kann ich das machen, dass er mir dann die Laufwerke ("C:","D:","G:",...) anzeigt ?