CString-Array: Anzahl der Felder herausbekommen



  • servus

    wie geht das? ich hab schon in google gesucht, aber nix passendes gefunden.

    der hintergrund is folgender:
    ich habe mehrere CString arrays unterschiedlicher länge. ich übergebe sie einer funktion. die soll die arrays füllen. das problem: ich weiß nich, wann er stoppen soll dies zu tun. wenn der index zu hoch wird crashed das programm
    ich brauch die Anzahl der felder, damit ich dem vorbeugen kann

    danke für eure hilfe


  • Administrator

    Entweder sich die Anzahl merken, oder du könntest CStringArray, bzw. CStringList aus der MFC verwenden. Bei denen kannst du die Funktion GetCount aufrufen.

    Es geht manchmal auch

    sizeof(array)/sizeof(CString)
    

    Allerdings mit vorsicht zu geniesen. Das funktioniert nicht immer, im allgemeinen gar nicht zu empfehlen.

    z.b:

    CString Array[20];
    int x = sizeof(Array)/sizeof(CString);
    Array[0].Format(_T("%d"), x);
    AfxMessageBox(Array[0], MB_OK, 0); // Gibt 20 zurück
    
    CString* pArray = Array;
    x = sizeof(pArray)/sizeof(CString);
    pArray[0].Format(_T("%d"), x);
    AfxMessageBox(pArray[0], MB_OK, 0); // Gibt 1 zurück
    

    Kannst du mal selber probieren. Daher sobald du dein Array einer Funktion übergibst, ist es vorbei mit dieser Lösung.

    Grüssli


Log in to reply