Probleme mit If Schleife



  • so habe es mal probiert, folgende Fehler kommen:

    Error C2450 - switch Ausdruck des Typs double nicht zulässig
    von welchem Typ muss es den sein??????

    desweiteren habe ich neugieriger weiße mal probiert einen unterdialog
    einzubauen für später und da kommt noch folgender Fehler hinzu:

    Error C2086 int resp neudefinition

    mein code:

    [code]
    switch (artikelnummer) {

    case 1:
    MessageBox("Artikelnummer gehört zu Artikel 123");
    break;
    case 2:
    MessageBox("Artikelnummer gehört zu Artikel 456");
    break;
    case 3:
    MessageBox("Artikelnummer gehört zu Artikel 789");
    break;
    case 4:
    MessageBox("Artikelnummer gehört zu Artikel 000");
    break;
    default:
    int resp;
    unterdialog1.DoModal();
    }
    UpdateData(0);



  • nutze an stelle des double ein int-wert denn du hast eh nur ganzzahlen, an sonsten solltest du auch in den cases die zahlen als double angeben also 1.0 zum Beispiel.

    der fehler Error C2086 int resp neudefinition kommt entweder dadurch das die Variable schon mal irgendwo definiert ist oder duch die Fehlenden geschweiften klammer in default zweig, also so mal versuchen zu schreiben

    break;
    default:
    {
        int resp;
        unterdialog1.DoModal();
    }
    }
    


  • Es sollte auch mal die Frage gestellt werden, wozu du diese Variable (resp) dort überhaupt deklarierst? Du benutzt sie nicht.



  • so ich hab es gemacht... funktioniert aber leider immer noch nicht 😞
    er nimmt immer den ersten wert den ich eingegeben habe z.b. artikelnummer 3 egal was ich danach eingebe es kommt immer die artikelnummer 3 ...

    code ist wie oben der gleiche
    vielleicht noch eine idee??????????????



  • Es ist sehr gefährlich, Deklarationen in einer Switch-Anweisung zu tätigen. Das kann unverhofft zu bösen Fehlern führen.
    Mal die Frage: wozu benötigst Du die Variable "resp"? Falls du versuchst, diese nach der Switch-Anweisung zu benutzen, wird dir das nicht gelingen, da auch die Switch-Anweisung ihren eigenen Gültigkeitsbereich hat. (Also innerhalb der Akkoladen.)



  • jimmy0385 schrieb:

    er nimmt immer den ersten wert den ich eingegeben habe z.b. artikelnummer 3 egal was ich danach eingebe es kommt immer die artikelnummer 3 ...

    Dann wird deine Variable artikelnummer nur beim ersten Mal gesetzt und danach nicht mehr aktualisiert.



  • ich benötige int resp um einen unterdialog zu öffnen den ich brauche...
    was kann ich denn da machen ?????

    nehmen wir an ich nehme meinen code den ich als erstes gepostet habe??????



  • zu isabeau kommentar ja genau richtig..
    habs auch schon mit UpdateData(0); probiert aber nichts???????



  • wie währe es wenn du am anfang deiner Routine auch mal UpdateData(TRUE) aufrufst um deine Variablen zu aktualisieren mut den Werten die in den Controlls stehen. un nutze TRUE und FALSE und nicht 0 und 1 wenn MS das mal per define ändert dann kommen bei dir sonderbare sachen raus und du weisst nicht warum. UpdateData ertwartet nun mal er definition ein TRUE oder FALSE und kein 0 oder 1.

    Die andere Sache ist das du resp zwar definierst aber doch nicht benutzt, also kann die für den Unterdialog den du ja mit DoModal() aufrufst nicht interessant sein. Sollte unterdialog1 dafür da seinen einstellunge zu verändern, dann lege die entsprechenden variablen in deinem haupanwendung au und schiebe die aktuellen Werten in den unterdialog bzw wenn DoModal() mit IDOK zurück kommt holst du die aktuellen Werte wieder aus den Dialog raus.



  • jo supi vielen dank hat geklappt mit dem UpdateData(TRUE); ich hatte es mit
    UpdateData(1); probiert ging aber nicht so gehts vielen dank nochmal......

    👍


Anmelden zum Antworten