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 kanndanke für eure hilfe
-
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