Ungleiche Werte bei Vergleich mit strcmp() immer gleich



  • Hallo zusammen,

    ich brauch wieder mal Hilfe !

    Ich habe folgenden Code:

    int __fastcall TfrmDateisuche::filtern(char *Dateiname, char *Verzeichnisname)
    {
    
            if(pruefart==3)
                    {
                    TListItem *pItemV=LiVVerz->TopItem;
                    TListItem *pItemD=LiVDateien->TopItem;
    
                    if(MidStr(Verzeichnisname, 12, 8)=="profiles")
                            {
                            a=filtern_Datei(Dateiname, Verzeichnisname);
                            return a;
                            }
    
                    String Verz=Verzeichnisname;                     // Hier gehts
                    for(int i=0; i<LiVVerz->Items->Count; i++)
                            {
                            if(strcmp(Verz.c_str(), pItemV->Caption.c_str())==0)
                                    {
                                    a=filtern_Datei(Dateiname, Verzeichnisname);
                                    return a;
                                    }
                            pItemV = LiVVerz->GetNextItem(pItemV, sdBelow, TItemStates() << isNone);
                            }
    
                    String Dat=Dateiname;                       //Hier gehts nicht
                    for(int j=0; j<LiVDateien->Items->Count; j++)
                            {
    
                            if(strcmp(Dat.c_str(), pItemD->Caption.c_str())==0);
                                    {
                                    return 1;
                                    }
                            pItemD = LiVDateien->GetNextItem(pItemD, sdBelow, TItemStates() << isNone);
                            }
    
                    a=filtern_Verzeichnis(Dateiname, Verzeichnisname);
                    }
    return a;
    }
    

    Das Ganze soll folgendermassen funktionieren:
    - Im ersten Vergleichsblock (String Verz=...) werden mit strcmp() Verz und pItemV->Caption verglichen. Das funktioniert auch. Wenn die beiden ungleich sind, springt er weiter.
    - Im 2. Vergleichsblock (String Dat=....) werden mit strcmp() Dat und pItemD->Caption verglichen. Wenn die beiden ungleich sind, springt er trotzdem auf "return 1;". Beispiel: Wenn ich mit dem Cursor beim debuggen auf "Dat" fahre, steht beim Cursor: Dat = {Data:"iq0010.bmp"}. Bei "Caption" von pItemD->Caption steht: pItemD->Caption = {Data:"profile.mdb"}. Das ist doch nicht gleich, oder ? Trotzdem springt er auf "return 1;".

    Was hab ich da falsch gemacht ?
    Vielleicht kann mir ja jemand einen Tip geben.

    Vielen Dank schon mal.



  • if(strcmp(Dat.c_str(), pItemD->Caption.c_str())==0); 
    //                                                 ^
    //Mach daraus mal
    
    if(strcmp(Dat.c_str(), pItemD->Caption.c_str())==0)
    


  • Das ist ja zum Kot...
    Ich hab das jetzt glaub ich 1 Stunde lang Zeile für Zeile rauf und runter verglichen. Aber meinst Du, ich hätte DAS gesehen ??

    Vielen Dank, Knuddelbaer. Jetzt gehts 🙂

    Gruß Markus



  • Ich koennt mir vorstellen, dass der ==-Operator fuer 'String' bestimmt
    ueberladen ist. Dann brauchste kein strcmp + .c_str()-Methode.

    mfg
    v R


Anmelden zum Antworten