Laden...

Wert aus Nachricht auslesen

Erstellt von StarboyCelli vor 18 Jahren Letzter Beitrag vor 18 Jahren 3.053 Views
S
StarboyCelli Themenstarter:in
6 Beiträge seit 2006
vor 18 Jahren
Wert aus Nachricht auslesen

Wie stelle ich es an das ich einen Wert aus einer Nachricht
auslese?

ich gebe in einer Textbox "ID 1111" und möchte das wenn
ich auf OK klicke er mir eine MsgBox anzeigt in der NUR die Zahl
angezeigt wird...

Bitte helft mir 🙁

T
10 Beiträge seit 2006
vor 18 Jahren

Naja laut deiner Angabe funktioniert es folgendermaßen:

            
string input= textBox1.Text;
string output = input.Remove(0,2);
MessageBox.Show(output, "Nur die Zahl", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

Wenn du allerdings meinst, dass eine beliebige Länge von Zeichen gefolgt von einer Zahl gegben sein können, dann musst du eben die Position der ersten Zahl herausfinden, und und alles was davor steht löschen.

Grüße

1.549 Beiträge seit 2004
vor 18 Jahren

oder wenn das Leerzeichen dazwischen immer vorganden ist Split

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

S
StarboyCelli Themenstarter:in
6 Beiträge seit 2006
vor 18 Jahren

also ich möchte das jetz lieber so machen:

if (Message == "/AddItem")
                {
                    int x = Message.Remove(0,9);
                    Client.SendData(PacketBuilder.GiveItem4(x));
                }

allerdings funktioniert das leider nicht so wie ich es mir erhofft hatte,
denn ich möchte den wert X (die ID in dem fall) an die GiveItem4 Funktion
übergeben jedoch bekomme ich dann jedes mal den fehler:

Cannot implicitly convert type 'string' to 'int'

und ich weiß nicht wie ich das beheben kann

ich versuche ein Onlinespiel-Server zu programmieren und die dazu
gehörigen GM Commands, und wenn ein GM /AddItem XXXX eingibt
soll er das entsprechende Item erhalten was soweit auch funktioniert
nur leider kann er keinen Wert für die ID eingeben da diese Funktion
nicht funktioniert...

1.549 Beiträge seit 2004
vor 18 Jahren

du musst den string erst in einen int parsen.

aber was du vorhast geht doch garnicht du läst deinen Code ja nur ausführen wenn Message == "/AddItem"ist aber dann ist ja keine ID da

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

S
StarboyCelli Themenstarter:in
6 Beiträge seit 2006
vor 18 Jahren

sorry ich bin relativ neu in C# und versuche so etwas zu lernen, wäre wirklich lieb wenn mir vielleicht n beispiel zeigen könntest wie das aussehen müsste 🙁

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo StarboyCelli.

int.Parse => siehe SDK-Doku

herbivore

S
StarboyCelli Themenstarter:in
6 Beiträge seit 2006
vor 18 Jahren

und wie soll das dann bitte aussehen?


                if (Message == "/AddItem3")
                {
                    X = Message.Split(' ');
                    int.Parse = X;
                    Client.SendData(PacketBuilder.GiveItem4());
                }

so?

1.549 Beiträge seit 2004
vor 18 Jahren

zum Parsen

			
string t = "ID 123";
			t = t.Substring(3);
			int x = int.Parse(t);
			MessageBox.Show(x.ToString());

und Deine Methode

		
	int x = 0;
			Message = Message.Substring(3);
				if (int.TryParse(Message,out x))
			{
				Client.SendData(PacketBuilder.GiveItem4(x));
			}

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

S
StarboyCelli Themenstarter:in
6 Beiträge seit 2006
vor 18 Jahren

aber nach deiner methode S.H. weiß er doch garnicht WANN er die if anweisung starten soll (da fehlt doch der befehl /AddItem)?!? oder versteh ich (wieder) was nicht?

1.549 Beiträge seit 2004
vor 18 Jahren

in meinem Code Wird

Client.SendData(PacketBuilder.GiveItem4(x));

nur aufgerufen wenn ab dem 3. Zeichen zahlen stehen.

wenn dein String anderst aussieht zb. So "/AddItem 123" aussieht würde ich dir empfehlen es nach diesem muster zu machen

			string t = "/AddItem 123";
			char[] c = new char[1];
			c[0] = ' ';
			string[] s = t.Split(c);
			if(s[0] == "/AddItem")
			{
				int x = int.Parse(s[1]);
				MessageBox.Show(x.ToString());
			}

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

S
StarboyCelli Themenstarter:in
6 Beiträge seit 2006
vor 18 Jahren

ich habs versucht aber aus irgendeinem unerfindlichen grund klappts noch nicht..
aber vielen vielen dank erstmal für eure hilfe 🙂

1.549 Beiträge seit 2004
vor 18 Jahren

Probier es mal mit diesem Code vieleicht bringt dich das ja weiter 😉

			string t = "/AddItem 123";
			char[] c = new char[1];
			c[0] = ' ';
			string[] s = t.Split(c);
			int x = 0;
			if(s[0] == "/AddItem")
			{
				if (int.TryParse(s[1],out x))
				{
					Client.SendData(PacketBuilder.GiveItem4(x));
				}

			}

und wenn noch fragen sind dann melde dich einfach

Wir Arbeiten eigendlich nicht wir nehmen nur das geld