Dialog stürzt immer ab???



  • Guten Abend zusammen,

    wenn ich den unten geposteten code über den Debugger Starte funktioniert er
    ganz normal wenn ich aber das programm über die exe aufrufe bleibt er immer
    nach betätigen des button hängen!
    Warum nur der Absturz über die exe?????
    weiß einer einen Rat?

    UpdateData(1);
    
    	ifstream D1("gruppe1.txt");
    	char Zeile[100];
    	//Dann mit einer while-schleife die Datei auslesen:
    	double Summe = 0;
    	while (!D1.eof())  //Also solange nicht das Ende der Datei erreicht ist
    	{
    	D1.getline(Zeile,sizeof(Zeile));
    	Summe += atof(Zeile);//Mit atof den Text in eine Zahl umwandeln und zu Summe hinzu addieren
    
    	} 
    	CString text;
    	text.Format("%.2f",Summe);
    	m_List2.InsertItem(0,"GRUPPE1");
    	m_List2.SetItemText(0,1,"7%");
    	m_List2.SetItemText(0,2,text);
    	int i = 0;
    	i=m_List2.GetItemCount();
    	m_List2.InsertItem(i,"   ");
    UpdateData(0);
    


  • Also ich muß da mal wieder bemängeln das ich in der MSDN noch nie gesehen habe das UpdateData ein 0 oder 1 als übergabe erwartet sonden TRUE und FALSE. Des weiteren warum benutzt Du für Zeile keinen CString und zum File lesen könnte man auch CStdioFile benutzen. Noch zum Schluß, wenn dein Programm abstürzt kann dir doch sicher der Debuger zeigen wo er gerade abgestürzt ist.



  • kannst du mir vielleicht für CString und CStdioFile ein Beispiel geben
    habe damit noch nie in diesem zusammenhang damit gearbeitet.
    TRUE und FALSE werte sind geändert bleibt aber wieder hängen.

    wäre super danke....



  • na für beides gibt es doch genügend beispiele im netz, muß man nur mal schaun.
    Ich hab auch nicht behauptet das es an TRUE und FALSE liegt, ich wollte dich nur drauf aufmerksam machen das es schlecht is wenn da als übergabe TRUE und FALSE definiert ist das einfach mit 0 und 1 zu machen.

    Wenn das im Debug läuft und im Release nicht, dann kannst du im Release die Debuginfos mit einschalten dann weden die mit zu kompiliert und du kannst bei absturz sehen wo er gerade hängen geblieben ist. Aber meist resultiert das aus nicht initialisierte Variablen die im debug immer initialisiert sind und im release nicht, aber das raus zu finden musst du schon mal bischen suchen. Kann auch einfach sein das es eine Speicherüberschreitung gibt.



  • Hallo,

    ich möchte nochmals auf dieses TRUE und FALSE zusprechen kommen. Hauptsächlich
    hast du ja recht aber in der Uni sagt man das TRUE und FALSE ein Zustand ist
    TRUE und FALSE ist nichts weiter als an oder aus im Bitsystem entspricht das
    1 und 0 in der Praxis sieht es aber wirklich so aus das 0 und 1 manchmal
    nicht funktioniert!
    das ist keine Kritik wollte nur sagen was man mir gesagt hat!!!!!

    Zu meiner Frage; Wie kann ich den im Release die Debuginfos einschalten????

    danke.....


  • Mod

    jimmy0385 schrieb:

    Hauptsächlich
    hast du ja recht aber in der Uni sagt man das TRUE und FALSE ein Zustand ist
    TRUE und FALSE ist nichts weiter als an oder aus im Bitsystem entspricht das
    1 und 0 in der Praxis sieht es aber wirklich so aus das 0 und 1 manchmal
    nicht funktioniert!
    das ist keine Kritik wollte nur sagen was man mir gesagt hat!!!!!

    TRUE ist die int Zahl 1 und nicht ein Bit 1 und FALSE ist die Zahl 0 als Integer.

    Alles funktioniert richtig, wenn man richtig vergleicht.
    Ein Fehler ist es grundsätzlich

    if (zustand==TRUE) 
    ...
    

    zu prüfen.

    Zu meiner Frage; Wie kann ich den im Release die Debuginfos einschalten????

    danke.....

    In dem in den Projekteinstellungen unter C/C++ -> General Debuginfos aktivierst.
    Dito in den Linker-Einstellungen.


Log in to reply