CString aufteilen und in Array speichern



  • Hallo an alle,

    folgendes Problem:
    habe eine Variable csMsgId vom Typ CString
    CString csMsgId;

    diese Beinhaltet z.b. 0x01, 0x02, usw. Daten.
    Nun möchte ich diesen Inhalt in ein Array speichern. Trennzeichen ist das Komma. Habe es mit strtok versucht aber irgend wie schaffe ich es nicht. Kann mir jemand helfen?

    Vielen Dank

    MOE



  • Was ist denn CString? Das klingt schon so Pfui-Bäh.



  • CString ist der MFC string Dinosaurier von Microsoft.

    Masterofeye schrieb:

    ...
    Habe es mit strtok versucht aber irgend wie schaffe ich es nicht. Kann mir jemand helfen?

    Nein. Jedenfalls nicht, wenn du uns nicht genau erklärst, wie dein String aufgebaut ist und was du damit machen möchtest. Normalerweise wenden andere User beim Beantworten von Fragen genauso viel Mühe auf wie der Fragesteller beim Fragen, und das ist bei dir ziemlich wenig.



  • Davon abgesehen gibts ein MFC-Unterforum, dort kennen sich die Leute auch eher mit CString aus.



  • Zeig einfach Code, dann wird das hier schon. Mit "leider schaffe ich es nicht" kann leider keiner was anfangen.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum MFC (Visual C++) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Verstehe das Prob. gerade nicht...
    CString aufsplitten und in Array

    Hier bekomme ich meine Daten
    CString csMsgId,csMsgName;
    m_EditMsgID.GetWindowTextA(csMsgId);
    m_EditMsgName.GetWindowTextA(csMsgName);

    Hier möchte ich sie rein haben

    stMsgList[...].u32MSG=...;
    stMsgList[...].cMsgName=...;

    Index ist natürlich Variabel.

    Mehr Code gibts da nicht XD. Die anderen 2000 Zeilen drehen sich um etwas vollkommen anderes. Sry für die CString Sache aber wenn man es nicht besser weiss...

    LG

    MOE




  • Mod

    Und warum weißt Du die Ergebnisse nicht einfach zu?
    Was meinst Du bitte mit aufteilen?

    m_EditMsgID.GetWindowTextA(csMsgId); 
    m_EditMsgName.GetWindowTextA(csMsgName); 
    // Ich denke dasist ein ULONG7unsinged int?
    stMsgList[x].u32MSG=_tcstoul(csMsgOd,NULL,10); 
    stMsgList[x].cMsgName=csMsgName;
    

    BTW: Es gibt auch GetDlgItemInt.



  • Gut nochmal von vorn :).
    Benutzer kann mit Komma getrennt DAten eingeben. z.b. 0x03,0x04,0x05 usw.
    Nun muss das ganze in das Struct Array (m_pstMsgList), aufgeteilt in u32Msg (unsigned long) und csMsgName (eCString) übertragen werden.

    Das habe ich unterschlagen 😞

    struct st_MSG
    	{
    		DWORD u32MSG;
    		std::string cMsgName;
    	};
    	typedef struct  st_MSG T_MSG;
    

    Danke für Antworten

    LG

    MIE



  • Masterofeye schrieb:

    Benutzer kann mit Komma getrennt DAten eingeben. z.b. 0x03,0x04,0x05 usw.

    Was heißt das? Dass der Benutzer hexadezimale Zahlen in die Tastatur hämmert, wie von dir gezeigt? Tut er das immer oder können auch mal andere Stellenwertsysteme verwendet werden? Im letzten Fall musst du schließlich je nach Eingabe anders konvertieren.

    Und woher kommt der MsgName? Hast du da eine Tabelle? Oder ist das nur der eingelesene Teilstring? Oder wie, oder was?

    Wie läuft's mit Tokenize? Schon mal ausprobiert?



  • Tokenize war die Lösung...
    und strtoul XD
    Hier mal der TestCode

    CString csMsgId,csMsgName;
    	//holt die MsgID und den MsgName vom Dialog
    	m_EditMsgID.GetWindowTextA(csMsgId);
    	m_EditMsgName.GetWindowTextA(csMsgName);
    
    	CString resToken;
    	int curPos = 0;
    	resToken=csMsgId.Tokenize(_T(","),curPos);
    	m_pstMsgList[6].u32MSG=strtoul(resToken,NULL,10);
    	int i=0;
    	while(resToken != _T(""))
    	{
    		i++;
    		resToken=csMsgId.Tokenize(_T(","),curPos);
    		m_pstMsgList[i].u32MSG;
    
    	}
    

    Das war ein Akt ...danke für die Hilfe ich muss noch eine Menge lernen :(... Werde das gleiche jetzt für MsgName machen und hoffe das es genauso verläuft 🙂
    Falls nochmal Probleme auftauchen melde ich mich. Nochmal Vielen Dank

    LG

    MOE


  • Mod

    Also Dein Code wie Du hier Tokenize verwendest scheint mir nicht ganz ausgereift zu sein.

    Alleine, dass Du annimst, dass Dein Array beliebig groß ist...



  • Masterofeye schrieb:

    m_pstMsgList[i].u32MSG;

    Ähm, und diese Zeile hier macht überhaupt nichts. Ist dir das klar?


Anmelden zum Antworten