Umstieg zu vs_CPP 2005
-
Folgende Fehlermeldung erhalte ich, wenn ich unten stehenden Code ausführe
Bitte um hilfe oder Korrektur
Dankeerror 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.
-
-.-