Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Dropdown Menü - Programmfehler

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
27.02.2006, 13:18 Uhr
~Anubis
Gast


Ich kriege immer für mich unerklärliche Fehlermeldungen. Hab das Programm auch schon als
Konsolenanwendung geschrieben, welches super funktioniert.


C++:
{
    char str[1000];

    char path;
    char attr;

    m_path.GetWindowText(str,1000);
        path = atof(str);
    m_attr.GetWindowText(str,1000);
        attr = atof(str);


    switch(attr)
        {
        case "text1": Funktion(&path,Parameter); break;
        case "text2": Funktion(&path,Parameter); break;
        case "text3": Funktion(&path,Parameter); break;
        case "text4": Funktion(&path,Parameter); break;
        
        default:0;
        }
}



im Dropdown Menü steht auch text1, text2 usw zur verfügung

hier die Fehlermeldung dazu:

warning C4244: '=' : Konvertierung von 'double' in 'char', moeglicher Datenverlust
warning C4244: '=' : Konvertierung von 'double' in 'char', moeglicher Datenverlust
error C2051: case-Ausdruck ist keine Konstante
error C2051: case-Ausdruck ist keine Konstante
error C2051: case-Ausdruck ist keine Konstante
error C2051: case-Ausdruck ist keine Konstante
warning C4065: switch-Anweisung enthaelt 'default', aber keine case-Marken

Was hat das zu bedeuten?
Bin für jede Hilfe dankbar!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.02.2006, 13:55 Uhr
Tommix



Hallo,
es ist Deinem Code kaum anzusehen, was er eigentlich machen soll.

Zitat:

C++:
path = atof(str);



Du wandelst einen C-String mit atof in einen double-Wert, also eine Kommazahl, um um diese Zahl dann in einem char, welches nur ganze Zahlen von -128 bis +127 speichern kann abzulegen. Das führt zu der genannten Warnung. Was soll da eigentlich passieren?

Zitat:

C++:
case "text1":



Der Ausdruck hinter dem case muß ein int sein, oder sich nach int konvertieren lassen. Das ist bei einer Zeichenkette nicht der Fall. Wie auch immer ist attr als char deklariert, also ein einzelner Buchstabe, der solche Werte ohnehin niemals annehmen kann.
Zu guter letzt:

Zitat:

Hab das Programm auch schon als Konsolenanwendung geschrieben, welches super funktioniert.


Das glaube ich Dir nicht.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.02.2006, 14:28 Uhr
~Anubis
Gast


hey Tommix hast du ICQ?

ich schick dir dann den Code bzw den der Konsolen anwendung?

ICQ: 323-078-661
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.02.2006, 14:42 Uhr
Tommix



Habe ich nicht. Du kannst den Code ja hier posten, wenn er nicht zu lang ist. Was ich meinte ist, daß obiger Code sich auch nicht als Konsolenanwendung compilieren lassen kann. Er ist syntaktisch falsch und semantisch zumindest merkwürdig. Mir ist wie gesagt weitgehend unklar, was Du da vorhattest zu programmieren.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.02.2006, 15:26 Uhr
~Anubis
Gast


Jo das weiß ich

also hier der Code nochmal:

C++:
void CAttributerDlg::OnOK()
{
    char str[1000];

    char path;
    char attr;

    m_path.GetWindowText(str,1000);
        path = atof(str);
    m_attr.GetWindowText(str,1000);
        attr = atof(str);


    switch(attr)
        {
        case "Normal":        SetFileAttributes(&path,FILE_ATTRIBUTE_NORMAL);                        break;
        case "Schreibschutz":    SetFileAttributes(&path,FILE_ATTRIBUTE_READONLY);                    break;
        case "Versteckt":        SetFileAttributes(&path,FILE_ATTRIBUTE_HIDDEN);                        break;
        case "System":        SetFileAttributes(&path,FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_HIDDEN);break;
        
        default:0;
        }
}



wie muss ich den denn jetzt umschreiben?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
27.02.2006, 15:32 Uhr
~Anubis
Gast


Der Pfad wird aus einem Feld ausgelesen Typ CEdit (m_path)
und die switch sache bezieht sich auf ein Combofeld CcomboBox (m_attr)

ich raff das nicht! Normaler Weise müsste müsste alles was in der ComboBox steht vom Typ String sein oder nicht?!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
27.02.2006, 15:56 Uhr
Tommix



Also nochmal:
case geht nicht mit Strings. path und attr sich jeweils ein einzelnes Zeichen. Und was soll hier

Zitat:

C++:
path = atof(str);



passieren?
- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
27.02.2006, 16:00 Uhr
~Anubis
Gast


also icvh hab diesen Teil mit aus einem anderen Programm übernommen weil das was mit dem Daten einlesen zu tun haben soll (aber so wie es aussieht wandelt es um oder?).

Ich hab dazu noch nirgends ne erklärung gefunden!

was ist das denn genau bzw. warum erkennt er die Case Konstanten nicht?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
27.02.2006, 16:08 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
ermittle den selektierten Idx Deiner CComboBox

C++:
switch (m_attr.GetCurSel())
{
      case 0:
            SetFileAttributes((LPCSTR)m_path,FILE_ATTRIBUTE_NORMAL);
            break;
      ..........
      ..........
}


m_path ist eine Member vom Typ CString zu Deinem CEdit
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 27.02.2006 um 16:18 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
27.02.2006, 18:09 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von ~Anubis:
warum erkennt er die Case Konstanten nicht?

Wenn du mal ganz angestrengt Tommix seine Posts liest dann wirst du feststellen dass er das mittlerweile mehrfach erklärt hat.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
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: