weiss jemand etwas mit der Fehlermeldung anzufangen?



  • Findet dein Programm eine Datei nicht?
    Ich hoffe du weißt das wenn du dein Programm aus dem Studio heraus startest das Arbeitsverzeichnis vom Programm standardmäßig <Projekt-Pfad> ist (kann man in der Konfig einstellen). Startest du das Programm z.B. per Doppelklick auf die .exe so ist das Arbeitsverzeichnis des Programmes <Projekt-Pfad>\Release (oder wo auch immer deine .exe Datei liegt).



  • daran sollte es eigentlich nicht liegen.
    ich habe sowohl im debug, als auch im release-ordner die gleiche ordnerstruktur
    angelegt.
    zusätzlich habe ich kontroll-routinen eingebaut, damit sichergestellt ist, dass
    die datei auch existiert. sollte sie nicht existieren, dann wird sie erstellt.
    ich bin mit meinem latein am ende.
    ich habe mir sogar die mühe gemacht, funktionen auf die ich zuerst mit zeiger zugegriffen habe in jeder klasse nochmals anzulegen.
    😡 😡 😡 😡



  • vielleicht findest du ja noch die zeit uns mitzuteilen,
    was du unter "nicht richtig läuft" verstehst



  • Hoffe wir reden jetzt nicht aneinander vorbei.
    Du öffnest in deinem Programm z.B. die Datei test.txt. Startest du dein Programm mit dem Studio so sucht er im Ordner "C:\Dokumente und Einstellungen\g\Desktop\Stempeluhr" nach dieser Datei.
    Startest du dein Programm mit einem Doppelklick auf die exe so sucht er in "C:\Dokumente und Einstellungen\g\Desktop\Stempeluhr\Release". Stell' in der Konfig mal das Arbeitsverzeichnis auf "C:\Dokumente und Einstellungen\g\Desktop\Stempeluhr\Release" um und teste mal damit. Das ist das Einzige was mit einfällt was anders sein könnte.



  • ich ermittele mit ner funktion den aktuellen programmpfad. die dateien können
    geöffnet und gelesen/geschrieben werden.
    das problem ist: einmal macht er es und das andere mal nicht:

    CString CStempeluhrView::prog_pfad()
    {
    	// Programmpfad ermitteln
    	CString prog_pfad;
    	static char path[_MAX_PATH]; 
    	if (_getdcwd('C' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3)
    	{
    		prog_pfad = path;
    	}
    	else if ((_getdcwd('D' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('E' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('F' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('G' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('H' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('I' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('J' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('K' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('L' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('M' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('N' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('O' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('P' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('Q' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('R' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('S' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('T' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('U' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('V' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('W' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('X' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('Y' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('Z' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('A' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    		else if ((_getdcwd('B' - 'A' + 1, path, _MAX_PATH ) != NULL && strlen(path) > 3))
    	{
    		prog_pfad = path;
    	}
    
    // "\" in "\\" umwandeln
    
    		int laenge = prog_pfad.GetLength();
    		int position;	
    		CString bearbeiten = prog_pfad;
    		CString zwischen1,zwischen2;
    		int laenge2 = bearbeiten.GetLength();;
    
    		while(laenge2 > 1)
    		{
    			position = bearbeiten.Find('\\', 0);
    
    			if (position != -1)
    			{							
    				zwischen1 = zwischen1 + bearbeiten.Left(position+1) + "\\"; 
    				bearbeiten = bearbeiten.Mid(position+1, laenge2-1);							
    			}
    			else
    			{
    				zwischen1 += bearbeiten;
    				bearbeiten = "";
    			}
    
    			laenge2 = bearbeiten.GetLength();
    
    		}
    		prog_pfad = zwischen1;	
    
    	return prog_pfad;
    
    }
    


  • Nicht den Programm-Pfad! Mit deiner Funktion holst du dir immer den aktuellen Pfad von Laufwerk C: (falls C: existiert), auch wenn dein Programm auf LW 😨 liegt.

    MSDN schrieb:

    Get full path name of current [b]working directoryb[b] on the specified drive

    Übrigens gibt es eine Funktion für sowas: MSDN: GetCurrentDirectory.

    Möchtest du den Pfad haben wo deine .exe Datei liegt - dann nimm GetModuleFileName(0) (Musst noch den Dateinamen am Ende entfernen). -> In der MFC-FAQ oder mal suchen.



  • Danke für den Tipp!! Werde ich mal versuchen.
    Das lustige ist, meine routine funktioniert auch (überall hin kopiert und mit ner
    messagebox kontrolliert).
    ist aber super nett, dass du dich meiner annimmst... 😃



  • Nur zur info:
    habe mit messageboxen debuggt und den Fehler gefunden:

    eine nicht auskommentierte code-zeile

    Sorry für meine unendliche Doofheit..... 😋



  • Hi, hab jetzt schon einige Zeit im Forum gesucht, aber einfach keine Lösung gefunden.
    Ich hab auch das Problem, dass sich mein Fenster immer wieder beim Debuggen schließt. Und das in der Entwicklungsumgebung. Das Problem tritt jedoch bei jedem Programm das ich debuggen will auf, sogar hierbei:

    #include <iostream>
    using namespace std;
    
    int main(){ 
        cout << "test" << endl;  
        return 0; 
    }
    

    naja und die nette antwort wie oben bereits beschrieben:

    "ntdll.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\system32\kernel32.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    Thread 0x4F8 wurde mit Code 0 (0x0) beendet.
    Das Programm "D:\VC PLUS PLUS\uebung07\uebung07_01\Debug\uebung07_01.exe" wurde mit Code 0 (0x0) beendet.

    Ach ja, benutze VS 6.0 sp6, unter WinXP prof.

    thx schonmal im vorraus
    Yeti



  • @Yeti
    bei dem Prog wird test ausgegeben. Dann ist das Programm beendet und schließt sich. einfach ein

    cin.get();
    

    einbauen.



  • danke, hat geholfen 👍


Anmelden zum Antworten