Problem bei if-Verzweigung [gelöst]
-
Warum wird der kommentierte if-Zweig im folgenden Code nicht ausgeführt?
#include <iostream> #include <windows.h> using namespace std; int main() { int errorcnt = 0; char PCname[MAX_COMPUTERNAME_LENGTH]; cout << "Programm zum umbenennen vom Computer.\n" << endl; do { cout << "Bitte geben Sie den gewuenschten Namen ein: " << endl; cin >> PCname; system("cls"); if(SetComputerName(PCname) != NULL) cout << "PC wurde umbenannt. Aenderungen ab dem naechsten Systemstart wirksam." << endl; else { cout << "Fehler beim Umbenennen. Fehlercode: " << GetLastError() << endl; ++errorcnt; } if (errorcnt < 1) // <---------------------- Wieso funktioniert dieser if-Zweig nicht?? cout << "Sie haben schon " << errorcnt << " mal eine ungueltige Eingabe gemacht.\n" << "Bitte wenden Sie sich bei Fragen an den Support unter der Tel. Nr.: 0900/666666"; //Kleiner Scherz am Rande ;-) } while(SetComputerName(PCname) == NULL); cin.sync(); cin.get(); return EXIT_SUCCESS; }
-
Weil
SetComputerName(PCname)nie ungleich 0 ist?
-
drakon schrieb:
Weil
SetComputerName(PCname)nie ungleich 0 ist?Doch ist es. Kannst ja mal probieren.
Return Value If the function succeeds, the return value is a nonzero value. If the function fails, the return value is zero. To get extended error information, call GetLastError.Oder seh ich das falsch?
-
Ah. Du hast ja nach dem anderen if gefragt, sorry.
Dann wird da halt errorcnt immer auf 1 gesetzt..Geh da am besten mit dem Debugger durch, dann siehst du, was genau fehl schlägt..
-
Die Bedingung kann nur dann erfüllt sein, wenn
SetComputerName(PCname) != NULL
erfüllt ist, denn im anderen (Fehler)fall wird errcount inkrementiert, und ist dann nicht mehr kleiner als 1.
-
NULL != 0?
#include <iostream> int function() { return 0; } int main() { if(function() != NULL) std::cout << "Not NULL" << std::endl; else std::cout << "NULL" << std::endl; }Ausgabe:
$ ./test_1 NULL
-
Null0r schrieb:
Ausgabe:
$ ./test_1 NULLWhoops, sry, passt ja...
-
Belli schrieb:
Die Bedingung kann nur dann erfüllt sein, wenn
SetComputerName(PCname) != NULL
erfüllt ist, denn im anderen (Fehler)fall wird errcount inkrementiert, und ist dann nicht mehr kleiner als 1.
Ach du Scheiße, ich merks erst jetzt!!
natürlich muss es heißen:
if (errorcnt > 1)Danke nochmal.
-
Nicht eher:
if (errorcnt >= 1)
?
-
drakon schrieb:
Nicht eher:
if (errorcnt >= 1)
?Nein, etwas Toleranz lass ich dem Benutzer noch xD
-
Sonst wäre da ja auch dann
Sie haben schon 0 mal eine ungueltige Eingabe gemacht...ausgegeben worden

-
Th69 schrieb:
Sonst wäre da ja auch dann
Sie haben schon 0 mal eine ungueltige Eingabe gemacht...ausgegeben worden

xD Ja, voll der dumme Fehler.
-
Th69 schrieb:
Sonst wäre da ja auch dann
Sie haben schon 0 mal eine ungueltige Eingabe gemacht...ausgegeben worden

Das bezweifel ich!