UDP Socket definieren

Die meisten String-Funktionen werden vermutlich bei der ersten 0 aufhören. Loop einfach durch pBuf und ersetz alle 0 durch z.b. '0'. Du selbst weißt ja anhand von iBufSize, wie lange der String ist.
 
Hab was neues festgestellt, das sechste Zeichen von zb
"ÿÿÿÿDLeGoLaS" ist im Ascicode die Anzahl der Spieler am Server, also wenn der Ascicode 5 ist dann sind 5 Leute am Server, jetzt muß ich das nur auslesen, in VB geht das so:

Private Sub Command1_Click()
Text2.Text = ""
If Text1.Text <> "" Then
For i = 1 To Len(Text1.Text)
For j = 0 To 255
If Mid(Text1.Text, i, 1) = Chr(j) Then Text2.Text = Text2.Text & j & " "
Next j
Next i
End If
End Sub

also durch ausprobieren mit chr(), nur gibts es was wie chr() in C++?
 
mit "loopen" mein ich: eine schleife schreiben, die das ganze array durchläuft und 0 durch irgendwas ersetzt.

Code:
for(char* pch = pBuf; (pch+pBuf) < iBufSize; ++pch)
{
if(*pch == 0) // == '\0'
   *pch = '0';
}

Da du es aber hier wie gesagt mit "nicht-text-daten" zu tun hast, rate ich dir das format zu analysieren und z.b. ein struct zu schreiben, dass eine person repräsentiert und dann darin die daten entsprechend zu speichern.
 
Danke, aber ich habs anders gelöst. Da die Speieranzahl, wie gesagt an der 6. Stelle steht hab ich den Code nun so aufgebaut:


//Spieleranzahl ermitteln
int j = 0;
string a;
while (j != 255)
{
a = char(j);
if (Message.substr(5,1) == a.c_str())
Anzahl = j;
j++;
}

Danke trotzdem. Aber keine Angst, ich hab bestimmt mind. noch ein Problem ;)
 
So, jetzt hab ich doch nochmal ein problem, wie schaff ich es, dass ein programm ohne Murren beendet wird, also Befehl un dProgramm ist weg. habs mit DestroyWindow(); probiert, da gibt er abe rne Fehlermeldung und stürzt ab.
 
Hmm, send einfach eine WM_QUIT Message?
(könnte allerdings bei Doc/View usw. etwas komplizierter sein, hab schon lang nicht mehr MFC programmiert *g*)
 
Update...

DestroyWindow() scheint schon zu stimmen. Stell sicher, dass du deine Resourcen alle korrekt freigibst.
Welche Fehlermeldung kommt eigentlich?
 
Irgendwas Debug assertion failed und dann gibt er dieses Codestück an

DWORD CWnd::GetStyle() const
{
ASSERT(::IsWindow(m_hWnd));

if (m_pCtrlSite == NULL)
return (DWORD)GetWindowLong(m_hWnd, GWL_STYLE);
else
return m_pCtrlSite->GetStyle();
}

Auch macht er wenn er Destroy.. gelesen hat, im Debugger, munter weiter.

Und noch ne andere Frage, was muß ich machen, damit ich das Programm veröffentlichen kann. Bei meinem Freund meckert das Programm, dass ein paar Daten fehlen.

msvcrtd.dll
mfc42d.dll
mfco42d.dll
mfcn42d.dll
msvcp60d.dll
 
Diese DLLs musst du mitveröffentlichen.

Die assertion sagt im Prinzip aus, dass GetStyle() aufgerufen wurde, nachdem das Fenster schon zertört war, check deinen Code nochmal auf Fehler.
 

Neue Beiträge

Zurück