Expertenfrage: Fehlermedung, die es nicht geben dürfte!



  • Hi @all,

    ich bekomme eine Fehlermeldung, die dürfte garnicht erscheinen.
    Also ich hab mein Programm in VC++6.0 geschrieben und alles funktionierte.
    (War ne Autorenversion, deshalb musste ich mir jetzt eine kaufen. Ich habe mir C++.NET Standard gekauft und mein Programm funktioniert nicht mehr bzw. es stürzt an einer Stelle ab (es lief vorher astrein).
    Als Fehlermeldung bekomme ich:
    Run-Time Check Failure #3 - The variable 'enumCurState' is being used without being defined.
    Variable benutzt, bevor sie definiert wurde??? Normalerweise dürfte das Programm dann ja nicht mal starten.
    Hier ist die Funktion:

    void CHauptDlg::Programmabbruch()
    {
    	MSG msg;
    	CCallBack EventSink;
    
    	// Initialize the event sink.
        hr = EventSink.Init( pEncoder );
    
    	// Wait until the encoding process
        // stops before exiting the application.
        WMENC_ENCODER_STATE enumCurState;
        WMENC_ENCODER_STATE enumPrvState;
    
        while( enumPrvState != WMENC_SOURCE_STOP )// hier kommt die Fehlermeldung!
        {
            // In order for the events to be triggered correctly,
            // the windows message queue needs to be processed.
    
            while(PeekMessage(&msg,NULL,NULL,NULL,PM_REMOVE))
            {
                TranslateMessage(&msg);
                DispatchMessage(&msg);
            }
    
            enumPrvState = enumCurState;
            enumCurState = EventSink.State();
            if( EventSink.SrcState() == WMENC_SOURCE_STOP )
                enumCurState = WMENC_ENCODER_STOPPED;
    
            if( enumCurState != enumPrvState )
            {
                switch ( enumCurState )
                {
    			case WMENC_ENCODER_STOPPED:
                    // TODO: Handle encoder stopped state.
    				m_bFlag = TRUE;
    				ShowWindow(SW_RESTORE);
                    OnStop();
    				break;
    
                case WMENC_ENCODER_STARTING:
                    // TODO: Handle encoder starting state.
                    break;
    
                case WMENC_ENCODER_RUNNING:
                    // TODO: Handle encoder running state.
                    break;
                    }
    		}
    	}
    }
    


  • Ups, hab schon ne Lösung gefunden.

    enumCurState = EventSink.State();
    enumPrvState = enumCurState;
    

    hab ich einmal for der while-Schleife gesetzt und es läuft.
    .NET ist doch schon sehr anfällig. Während es unter VC++ 6.0 noch egal war, ob in enumPrvState schon ein Wert gesetzt war oder nicht, stört sich .NET aber richtig dran.



  • Und das ist auch gut so.



  • ha ha schrieb:

    Und das ist auch gut so.

    Das ist mir auch klar, jedoch muß man jede Menge Code bearbeiten, wenn man Codeteile einsetzt, die unter 6.0 geschrieben wurden.


Anmelden zum Antworten