Frage zu CString:Compare...



  • Hallo kann mir wer sagen wor hier der fehler is:

    if(strToCheck->Left(3).Compare(*m_KeysA[i].keyword) == 0))
    {
    ...
    }
    

    Das ganze wird ohne fehler compiliert... aber fürht zu einem Laufzeit fehler...
    Die Klasse von m_KeysA sieht wie folgt aus:

    class SKeyword
    {
    public:
        CString* keyword;
        int keylen;
        int nColorInd;
    };
    


  • Nun hab ich's so gemacht:

    int size = sizeof(m_KeysA)/10;
        int i = 0;
        bool bGo = true;
        while(bGo)
        {
            AfxMessageBox("searching");
            if(strToCheck->Left(4) == *m_KeysA[i].keyword)
            {
                AfxMessageBox("found");
                bGo = false;
            }
    
            if(i == size)
                bGo = false;
    
            i++;
        }
    

    läuft das ganze aber nur 2 mal durch und dann kommt wieder der fehler 😞

    valen16
    valen16@binary-pulse.org
    [url] http://www.binary-pulse.org/~valen16/ [/url]



  • Wie kommst du auf 10?



  • Was für ein Laufzeitfehler kommt denn?

    Muss "keyword" in Deiner Klasse unbedingt ein Zeiger sein?

    int size = // die Anzahl der Elemente in Deinem Array wird Dir wohl bekannt
                   // sein, die Berechnung wird so nicht klappen
    
        CString strCheck = strToCheck->Left(4);
        int nFound = -1;
        for(int i = 0; i < size; ++i)
          if(strCheck == *(m_KeysA[i].keyword))
          {
            AfxMessageBox(_T("found"));
            nFound = i;
            break;
          }
    

Anmelden zum Antworten