Auslesen aus einem String

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Phlox

Betreff: Auslesen aus einem String

BeitragSa, Jun 21, 2008 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ok, ich weiß eigentlich, wie man es macht, aber heute bekomme ich's nicht hin.

Also ich habe einen String mit dem Inhalt zahlvon0bis255|zahlvon0bis255|zahlvon0bis255.
(Also z.B. 48|244|51). Jetzt werden die meisten denken: Der will mit Bytes arbeiten. Richtig.
Mein Problem ist jetzt: Wie bekomme ich die Zahlen da raus? Mit 2 Zahlen ist das kein Problem.

Mein Lösungsansatz:


Code: [AUSKLAPPEN]
k1=Instr(NetMsgData(),"|")
k2=Instr(NetMsgData(),"|",k1+1)
s1=Int(Mid(NetMsgData(),1,k1)
s2=Int(Mid(NetMsgData(),k1+1,?????);Hier liegt der Fehler
s3=Int(Mid(NetMsgData(),k2+1)


Ja, ich weiß, ich sollte NetMsgData() in einer Variable speichern..... Rolling Eyes

EDIT:
Ich mach's jetzt so:
Code: [AUSKLAPPEN]
k1=Instr(NetMsgData(),"|")
k2=Instr(NetMsgData(),"|",k1+1)
s1=Int(Mid(NetMsgData(),1,k1)
s2=Int(Mid(NetMsgData(),k1+1)
s3=Int(Mid(NetMsgData(),k2+1)

INT mach alles hinter dem | weg.

TiA

Noobody

BeitragSa, Jun 21, 2008 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun, da du scheinbar im Netzwerk arbeitest, ist diese Methode nicht gerade die beste Wink
Blitz bietet ja schon von Haus aus Funktionen wie ReadByte und WriteByte an.

Wenn du unbedingt mit Strings arbeiten willst, bietet es sich auch an, gleich einen Buchstaben als Byte zu verwenden.
Statt dass du also die Zahl selbst an den String anhängst, wandelst du sie mittels Chr in einen Buchstaben um (da es sich hier ja um ein Byte handelt) und fügst den erhaltenen Buchstaben zum String hinzu.
Auslesen tust du dann einfach mit Asc und Mid, was dann relativ einfach wird, da dein Byte genau einen Buchstaben lang ist und du somit keine Trennzeichen wie "|" benötigst.

Grundsätzlich sollte man aber im Netzwerk wirklich die dazu geschaffenen Funktionen verwenden und solche Strings vermeiden.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Nox

BeitragSa, Jun 21, 2008 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Auf jeden Fall Noobodys Posting zu Herzen nehmen. Um deine Frage dennoch zu beantworten, ich hatte mal genau eine solche Funktion ins Codearchiv gehämmert: https://www.blitzforum.de/foru...hp?t=15242

ToeB

BeitragSa, Jun 21, 2008 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube er arbeitet mit DirectPlay, Noobody. NetMsgDate ist ein Befehl von DirectPlay. Da kann man nichts mit WriteByte/ReadByte machen Smile

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Noobody

BeitragSa, Jun 21, 2008 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, das war mir gar nicht bekannt (ich habe normalerweise nicht viel mit DirectPlay zu tun).
Hierbei ist jedoch trotzdem die Methode mit Chr angebracht, da man ansonsten inklusive Trennzeichen bis zu 4 Bytes verwendet für nur ein Byte.
Integer und Floats lassen sich so auch ressourcensparend verschicken, wobei Integer mithilfe von Shr und And in Bytes aufgeteilt werden müssen (für Floats benötigt man eine Umrechnungsbank).
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group