Eigentlich nicht erfüllte Bedingung wird ausgeführt



  • Hallo zusammen.

    Zuerstmal der Codeschnipsel um den es sich dreht:

    if(csTmp.CompareNoCase("1a2")!=-1 || csTmp.CompareNoCase("1502")!=-1) //	 Check if serial is blacklisted
    {
    	csSN = csTmp;
    	if(CheckSN(csSN)==true)
    	{
    		AfxMessageBox("The serial of this logfile is blacklisted!", MB_OK | MB_ICONWARNING);
    	}
    }
    

    In csTmp lese ich eine Textdatei zeilenweise ein (es befindet sich immer nur eine Zeile darin). So, eigentlich soll der Anweisungsblock in dem IF also nur ausgeführt werden, wenn sich in der aktuellen Zeile der Teil 1a2 bzw 1502 befindet.

    -1 wird mir ja zurückgegeben, wenn er nichts findet, also muss diese Bedingung "umgedreht" werden, eben durch != .

    Seltsamerweise erfüllt aber irgendwie jede Zeile diese Bedingung. Diese Zeilen, die diese angeblich erfüllen sind z.B. solche hier:

    WinAspi: -
    CD-ROM: <TOSHIBA ODD-DVD SD-M1802>Version: 1031 - HA 3 TA 1 - 6.6.0.7
    === Scsi-Device-Map ===

    usw..

    Vielleicht kann mir jemand helfen?? Ich steh grad echt wie der Ochs vorm Berg.

    Vielen Dank schonmal!



  • if(csTmp.CompareNoCase("1a2") == 0 || csTmp.CompareNoCase("1502") == 0)
    


  • Nein, leider nicht. Damit springt er bei einer Zeile die z.B. 1A25 enthält gar nicht in den Anweisungsblock 😞



  • CompareNoCase vergleicht zwei ganze Strings miteinander. Die Funktion kannst du nicht dafür benutzen um zu gucken ob ein Teil darin vorkommt.



  • Hmpf, so etwas hatte ich fast schon befürchtet. Also bliebe ja nur die Find() Funktion, allerdings ist diese doch Case-Sensitive oder?



  • Wie wäre es mit MakeLower vor Find?



  • Ja ok, das ist natürlich auch eine Möglichkeit, wollte ich eigentlich ursprünglich vermeiden. Aber gut 😉

    Danke 🙂


Anmelden zum Antworten