CString xyz[100] als Rückgabewert



  • Hi! Ich habe ein "knuspriges" Problem. Ein kleines Array kann man bekanntlich mit

    CString xyz[100];
    

    definieren. Jetzt möchte ich eine Funktion anwenden, die als Rückgabe in den CString schreibt. Dabei ist die Arraygröße aber unterschiedlich. Ich geb mal mein Beispiel:

    Hier ist >narray< global definiert. Diese Variable kann ich jederzeit abfragen. Aber eigentlich möchte ich die Daten in >strarr< zurückgeben. Aber wie?

    ...
        CString strarr[100];
        strarr=Explode(txt,"<xyz>");
        ...
    }
    
    void CGSporty::Explode(CString txt, CString trz)
    {
        CString txt2,mid,right;
        int lenght,i=0,pos,trzlen;
        int narrayanz=0;
    
        trzlen=trz.GetLength();
        while (txt.GetLength()>0) {
            pos=txt.Find(trz,0);
            if (pos>0) {
                mid=txt.Left(pos);
                right=txt.Mid(pos+trzlen);
                txt=right;
                narray[narrayanz]=mid;          //narray war global definiert
                narrayanz++;                                //geht zwar, nützt mir aber wenig
            }
            else {
                narray[narrayanz]=txt;
                txt="";
                narrayanz++;
            }
        }
        narrayanz--;
    }
    


  • Einfach nen dritten Parameter, welcher ein CString* ist und da dann ein CString-Array übergeben.



  • Genau das war das, was mir noch gefehlt hat! Danke dEUS! Super 🙂

    Kann man eigentlich ein CString in ein CString-Array umwandeln?



  • wie meinst du das?



  • Wenn ich

    CString xyz[100]
    

    habe, klappt das ja super mit den Befehlen xyz[1]. Aber bei

    CString xyz
    

    kommt ja logischerweise ein Fehler bei der Zuweisung mit xyz[1]=_T("");.

    Ich beziehe das jetzt auf meine Funktion. Ich weis ja nicht ob meine Array-Anzahl reicht. Gebe ich es zu klein an, stürzt das Programm ab. Gebe ich es zu groß an, brauche ich unütz zu viel Speicher. Bei einem Array macht das ja nichts, aber bei 10 Arrays ist das schon komplizierter. Ich weis dEUS, wenn es nach dir ginge, sollte ich lieber CStringArray benutzen. Aber ich komme mit CStrings besser zurecht.

    Der Vorteil den ich mir dann zu nutze mache, ist das ich die (weiter denk...) geschriebene Datei mit PHP weiterverarbeiten kann. Dort gibt es ja schon diese Funktion explode.

    [ Dieser Beitrag wurde am 17.02.2003 um 22:33 Uhr von hronny editiert. ]



  • Dafür gibt es eine Tolle MFC-Klasse

    CStringArray
    Ist das gleiche wie CString nur als Array. Sag auch der Name schon.


Anmelden zum Antworten