Umstieg zu vs_CPP 2005



  • Folgende Fehlermeldung erhalte ich, wenn ich unten stehenden Code ausführe
    Bitte um hilfe oder Korrektur
    Danke

    error C2051: case-Ausdruck ist keine Konstante

    private: System::Void Form1_FormClosing(System::Object^  sender, System::Windows::Forms::FormClosingEventArgs^  e) {
    
    				 if(textBox1 ->Modified)
    				 {
     //System::Windows::Forms::DialogResult result;
    					 switch (MessageBox::Show (L"Änderungen speichern ?",L"Anfrage",MessageBoxButtons::YesNoCancel,MessageBoxIcon::Question,MessageBoxDefaultButton::Button1))
          //   System::Windows::Forms::DialogResult result;
    
    					{
    
    					 case DialogResult::Yes:
    						 try 
    						 {
    							 if(strDateiname == String ::Empty)
    							 {
    								 menuItem8_Click(sender,e);
    							 }
    							 else
    							 {
    								 menuItem9_Click(sender,e);
    							 } //if
    						 }
    						 catch (Exception^)
    						 {
    							 e->Cancel=true;
    						 }  //try
    						 break;
    					 case DialogResult::Cancel:e->Cancel=true;
    						 break;
    					 } //switch
    				 } //if
    


  • case DialogResult::Cancel:e->Cancel=true;
    

    Das ist der Fehler!



  • Aprollo schrieb:

    case DialogResult::Cancel:e->Cancel=true;
    

    Das ist der Fehler!

    Eigentlich ist der Fehler in folgender Zeile

    case DialogResult::Yes:
    


  • // Wenn nichts Modifiziert ist, raus hier
        if(!textBox1 ->Modified) 
            return;
    
        // Benutzer fragen was er will
        DialogResult ^ res = switch (MessageBox::Show ("Änderungen speichern ?","Anfrage",MessageBoxButtons::YesNoCancel,MessageBoxIcon::Question,MessageBoxDefaultButton::Button1));
    
        // Den Abbruch ggf. vorbereiten
        e->Cancel = res ==  DialogResult::Cancel;
    
        // prüfen ob gespeichert werden soll
        if(res != DialogResult::Yes) // Alternativ: if(res || res ==  DialogResult::No)
            return;
    
         // Speichern
         if(System::String::IsNullOrEmpty(strDateiname)) 
             menuItem8_Click(sender,e);  // innerhalb der Methoden wird es wohl schon eine Fehlerbehandlung 
         else                            // geben, ansonsten würde die SW ja auch abstürzen wenn man das Menü benutzt.
             menuItem9_Click(sender,e);
    


  • #include "stdafx.h"
    
    using namespace System;
    
    public enum class day : int { mo, di, mi, don, fr};
    
    int main(array<System::String ^> ^args)
    {
    	day^ d = day::mo;
    
    	switch(*d)
    	{
    	case day::mo:
    		Console::WriteLine(L"Es ist Montag");
    		break;
    	}
    
        Console::WriteLine(L"Hello World");
        return 0;
    }
    

    case DialogResult::Yes: ist legal, wie du an mein Code siehst, welches Fehlerfreu in Visual Studio 9 compiliert wird.



  • Sieht man an Deinem Code nicht, da DialogResult nicht verwendet wird.

    Die Frage wäre ja auch eher, in welchem Scope steht in dem Code DialogResult ? Wird das von this verwendet oder der Typ ? Eventuell muss man den Typ komplett auflösen um die Mehrdeutigkeit aufzulösen.

    Mit einem x::y: als Beweis kommst Du hier nicht weit.



  • -.-


Anmelden zum Antworten