Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Zeichenketten stehen hintereinander

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
18.02.2005, 10:56 Uhr
mstank



Hi @ all!

Für den Netzwerkzugriff habe ich die Klasse MySocket in einer dialogbasierten Anwendung. Die Dialogklasse heißt CStarDustUDPDlg. Die Methode OnReceive liefert mir die empfangenen Inhalte der UDP-Pakete.

Diese werden immer in der Variablen m_strReceive angehangen. Ich möchte aber, daß nur der letzte übertragene Datensatz in der Variablen steht, damit ich ihn in ein StringArray schreiben kann.

Bisher hatte ich entweder kein Erfolg oder aber der Inhalt der Variable wurde gelöscht und mit wurde nichts angezeigt.

Anmerkung: In der Editbox stehen sie untereinander. Aber im gespeicherten File immer hintereinander.


C++:
void CMySocket::OnReceive(int nErrorCode)
{

    OutputDebugString("CMySocket::OnReceive\n");
    TCHAR buff[70000];
    int nRead;

    ((CStarDustUDPDlg*)m_pDlg)->UpdateData(TRUE);

    //Abfragen der Portadresse und der IP-Adresse
    nRead = ReceiveFrom(buff, 69999, ((CStarDustUDPDlg*)m_pDlg)->m_strRemote, ((CStarDustUDPDlg*)m_pDlg)->m_remoteport); //make it smaller so we can experiment mulitple notifications
    //Verzweigung für Fehlerbehandlung
    switch (nRead)
    {
    case 0:
        Close();
        break;

    case SOCKET_ERROR:
        if (GetLastError() != WSAEWOULDBLOCK)
        {
            if (GetLastError() != WSAEMSGSIZE)
            {
                TCHAR szError[256];
                wsprintf(szError, "OnReceive error: %d", GetLastError());
                AfxMessageBox (szError);
            }
            else
            {
                AfxMessageBox ("Der Datensatz war zu lang und wurde abgeschnitten!");
                CString szTemp(buff);
                ((CStarDustUDPDlg*)m_pDlg)->m_strReceive += szTemp;
                ((CStarDustUDPDlg*)m_pDlg)->UpdateData(FALSE);
            }
        }
        break;

    //Wenn keine Fehler aufgetreten sind, dann Ausgabe
    default:
        if (nRead != SOCKET_ERROR && nRead != 0 )
        {
            TCHAR szError[256];
            wsprintf(szError, "OnReceive bytes: %d", nRead);            
            buff[nRead] = 0; //terminate the string
            CString szTemp(buff);
            ((CStarDustUDPDlg*)m_pDlg)->m_strReceive += szTemp;
            ((CStarDustUDPDlg*)m_pDlg)->UpdateData(FALSE);
        }    
    }

    CAsyncSocket::OnReceive(nErrorCode);
}


Nun der relevante Code:


C++:
    //Wenn keine Fehler aufgetreten sind, dann Ausgabe
    default:
        if (nRead != SOCKET_ERROR && nRead != 0 )
        {
            TCHAR szError[256];
            wsprintf(szError, "OnReceive bytes: %d", nRead);            
            buff[nRead] = 0; //terminate the string
            CString szTemp(buff);
            ((CStarDustUDPDlg*)m_pDlg)->m_strReceive += szTemp;
            ((CStarDustUDPDlg*)m_pDlg)->UpdateData(FALSE);
        }    
    }

    CAsyncSocket::OnReceive(nErrorCode);
}



Wer kann mir helfen, mein Problem zu lösen?

THX Markus
--
Hier spricht die dunkle Seite der Macht!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.02.2005, 11:17 Uhr
enno-tyrant
Frag nicht!


wenn du _nur_ den letzten string willst, dann mach doch:

C++:
((CStarDustUDPDlg*)m_pDlg)->m_strReceive = szTemp;


--
...um etwas zu verstehen muß man wissen wie es funktioniert...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.02.2005, 15:56 Uhr
mmc20
puss in boots


oder gleich:

C++:
// das weglassen
// CString szTemp(buff);
// ((CStarDustUDPDlg*)m_pDlg)->m_strReceive += szTemp;
// und gleich so schreiben
((CStarDustUDPDlg*)m_pDlg)->m_strReceive.Format("%s", buff);

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: