Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » switch-case Fehlermeldung bei Cstring

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
01.03.2004, 15:38 Uhr
ai-tee



Hallo ihr,

hat jemand ne Ahnung wie ich den Fehler wegbekomme:


C++:
x:\xxx\xxx\xxx.cpp(274) : error C2450: switch-Ausdruck des Typs 'class CString' nicht erlaubt
        Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden



code:

C++:
// get description from line
CString descr = line.Right (line.GetLength()-16);
                    
// define umlauts pattern
const CString auml = "\xe4", Auml = "\xc4"; // ä, Ä
const CString ouml = "\xf6", Ouml = "\xd6"; // ö, Ö
const CString uuml = "\xfc", Uuml = "\xdc"; // ü, Ü
const CString szet = "\xdf";                // ß
                            
for (int i = 0; i <= descr.GetLength(); i++)
{
   CString pattern = descr.Mid (i, 4);

   switch (pattern)
   {
           case auml:
               descr = descr.Left (i) + " ä" + descr.Right (descr.GetLength()-(i+4));
               break;
           case Auml:
               descr = descr.Left (i) + " Ä" + descr.Right (descr.GetLength()-(i+4));
               break;
           case ouml:
               descr = descr.Left (i) + " ö" + descr.Right (descr.GetLength()-(i+4));
               break;
           case Ouml:
               descr = descr.Left (i) + " Ö" + descr.Right (descr.GetLength()-(i+4));
               break;
           case uuml:
               descr = descr.Left (i) + " ü" + descr.Right (descr.GetLength()-(i+4));
               break;
           case Uuml:
               descr = descr.Left (i) + " Ü" + descr.Right (descr.GetLength()-(i+4));
               break;
           case szet:
               descr = descr.Left (i) + " ß" + descr.Right (descr.GetLength()-(i+4));
               break;
           default:
               // no substitution necessary
               break;
   }
}



Vielen Dank für die Hilfe,

Liebe Grüße äit
--
Greetz, ai`tee

Dieser Post wurde am 01.03.2004 um 15:57 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.03.2004, 15:58 Uhr
Pablo
Supertux
(Operator)


Soweit ich weiß, ist CString eine MFC Klasse und keine ANSI Klasse. -->
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.03.2004, 16:19 Uhr
ai-tee



Augenscheinlich will switch kein CString haben ... kann ich dennoch irgendwie einen CString benutzen?

Wenn nein, wie konvertiere ich CString nach char? bzw. const char? Es darf aber kein char* sein, irgenwie spielt dann switch auch nicht mehr mit ...

help plzzz
--
Greetz, ai`tee
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.03.2004, 16:52 Uhr
Tommix



Hallo,

C++:
switch(pattern[0])
{
    ...



Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
01.03.2004, 16:52 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
switch kann meines Wissens kein char* oder ähnliches. Da musst du wohl alles mit if else machen.

mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
01.03.2004, 16:57 Uhr
ai-tee



Hmpfr och nööö
es muss gehen irgendwie ... man muss es doch konvertieren können, oder nicht?
--
Greetz, ai`tee
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
02.03.2004, 08:35 Uhr
ao

(Operator)



Zitat:
ai-tee postete
Hmpfr och nööö
es muss gehen irgendwie ... man muss es doch konvertieren können, oder nicht?

Leider nein, switch funktioniert nur mit ganzzahligen Ausdrücken. Wenn du Strings vergleichen willst, bleibt dir nur die if-else-if-Kette.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
02.03.2004, 09:42 Uhr
ai-tee



Gut das hab ich jetzt soweit ... nur wie ihr ja seht habe ich mehrere Hex Ausdrücke \x<yy> jeweils einer Variablen zugeordnet ... dennoch kann er bei eigentlich positiver Identifizierung des Teilstrings irgendwie nicht auf ein positives Ergebnis kommen ... ich schätze mal, weil die Zeichenkette \x<yy> also z.b. \xdf für ein "ß" in ein anderes nicht erkennbares Zeichen umgewandelt wird, kann das sein? Wie umgehe ich das?
--
Greetz, ai`tee
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
02.03.2004, 10:33 Uhr
ai-tee



Ich habs jetzt nochmal anders mit einer Tabelle und der replace Methode ... aber es will immer noch nicht, wann immer ich mir den Substring nach dem ich suche ausgeben lasse kommt statt z.B. "\xdf" einfach nur ein viereck ... ?
--
Greetz, ai`tee
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
02.03.2004, 14:38 Uhr
ai-tee



So hallo nochmal ... habs jetzt mal versucht um zu bauen ...

aber irgendwie hab ich Probleme und komme nicht weiter ... ich kriege immer mehrere Fehler ... entweder Semikolon fehlt oder xxx is unerwartet ...


C++:
class TranslateUmlauts : public CString
{
    private:
        
        struct UmlautData
        {
            char umlaut[2];
            char hexString[5];            
        };

        struct UmlautData AllUmlauts[7];

        AllUmlauts[0].umlaut = "ä";
        AllUmlauts[0].hexString = "\xe4";
        AllUmlauts[1].umlaut = "Ä";
        AllUmlauts[1].hexString = "\xc4";
        AllUmlauts[2].umlaut = "ö";
        AllUmlauts[2].hexString = "\xf6";
        AllUmlauts[3].umlaut = "Ö";
        AllUmlauts[3].hexString = "\xd6";
        AllUmlauts[4].umlaut = "ü";
        AllUmlauts[4].hexString = "\xfc";
        AllUmlauts[5].umlaut = "Ü";
        AllUmlauts[5].hexString = "\xdc";
        AllUmlauts[6].umlaut = "ß";
        AllUmlauts[6].hexString = "\xdf";

    public:
        
        char doTranslation ()
        {
            // translation functionality
        }
}



Hab ich irgendwas falsch gemacht? Is meine erste Klasse und meine erste Struktur ...
--
Greetz, ai`tee

Dieser Post wurde am 02.03.2004 um 14:44 Uhr von ai-tee editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: