darkprodukt
Goto Top

Error: C2065 - for each Char in Char Array

Guten Abend,

ich versuche gerade meiner Textbox eine "Maske" zu verpassen. Ich weis es gibt auch MaskedTextBox aber diese ist leider ungeeignet.
Ich möchte das nur kleinbuchstaben ( hab ich schon mit "CharacterCasing = Lower" gemacht ), Zahlen, Komma und "Leerzeichen" akzeptiert werden.

Ich Arbeite mit Windows Forms (VS Express C++ 2010)

Hab erst versucht von diesem sehr gut beschriebenen Beitrag die TextBox in C++/CLI zu übertragen, habe es aber, nachdem ich noch mehr unsinnige Compilermeldungen erhalten habe, aufgegeben. Und dabei TextBox->Undo gefunden was einen großen teil des beispiels ersetzen würde....
http://www.mycsharp.de/wbb2/thread.php?threadid=17535
Der Fehler war glaub Int32 konnte nicht in int konvertiert werden... aber ich hatte die variablen schon als Int32 angelegt... woher kahm da int? zumahl es ja das gleiche ist.

[Edit1:] Bitte erst Edit1 ganz unten Lesen...

Meine neue Lösung sieht so aus:
private: System::Void TextBox_VideoDataExtensions_TextChanged(System::Object^  sender, System::EventArgs^  e) 
{
    String^ VDEx_allowedChars = L"abcdefghijklmnopqrstuvwxyz0123456789, ";  

    //for(int i = 0; i < TextBox_VideoDataExtensions->Text->Length; i++)
    for each(System::Char^ letter in TextBox_VideoDataExtensions->Text->ToCharArray()); 
    {
        // !VDEx_allowedChars->Contains(TextBox_VideoDataExtensions->Text->ToCharArray()[i]->ToString())
        if( !VDEx_allowedChars->Contains(letter->ToString())) 
        {
            if( TextBox_VideoDataExtensions->CanUndo )
            TextBox_VideoDataExtensions->Undo();
        }
    }
}
...\forms_tests2\Eigenschaften.h(09 in diesem fall): error C2065: 'letter': nichtdeklarierter Bezeichner
...\forms_tests2\forms_tests2\Eigenschaften.h(09 in diesem fall): error C2228: Links von ".ToString" muss sich eine Klasse/Struktur/Union befinden.

Ich glaube der Compiler erkennt einfach Char nicht...
MSDN C2065:
Es wird mit einer Debugversion der C-Laufzeit kompiliert, und dadurch in einer for-Schleife eine Iteratorvariable aus der Standard-
C++-Bibliothek deklariert. Anschließend wird versucht, diese Iteratorvariable außerhalb des Gültigkeitsbereichs der for-Schleife zu
verwenden. Kompilieren eines Standard-C++-Bibliothekscodes mit einer Debugversion der C-Laufzeit impliziert /Zc:forScope. Weitere
Informationen finden Sie unter Debugiterator-Unterstützung.

Aber ist for each nicht extra für diese art von Anwendung gedacht?


Die beiden Auskommentierten Zeilen sind meine erste Lösung. Die Fnktionierte aber eben nicht ganz so toll...
Es wurde ein überlauf erzeugt wenn man zu schnell ein nicht gültiges Zeichen eingetippt hat.

Vielen dank für alle Hilfen!

Mit freundlichen Grüßen,

Darkprodukt

[Edit1:]
Oh mein Gott for each(); ich kann es kaum fassen das ich das Übersehen habe...

Mein Code funktioniert zwar nun aber immernoch der gleiche Fehler wie auch im 1. versuch...
"Eine nicht behandelte Ausnahme des Typs "System.StackOverflowException" ist in System.Windows.Forms.dll aufgetreten."

Ich mach eine neue Frage für das problem mit der TextBox...

Content-Key: 230860

Url: https://administrator.de/contentid/230860

Ausgedruckt am: 28.03.2024 um 23:03 Uhr