Instr,Left,Mid Problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

SiegbertSchnößel

Betreff: Instr,Left,Mid Problem

BeitragMo, März 03, 2014 2:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich will die Daten, die von Server an die User verteilt werden in einzelne Variablen zerlegen und dann in ein Type speichern, Problem irgendwas mache ich beim Zerlegen falsch. Alles funktioniert eig. ganz gut ausser beim ersten Zerlegen,dort lässt er die ersten 4 Buchstaben immer weg beim Code habe ich mich an dem Beispiel aus dem Help dingsbums gehalten.
Den String vorm Zerlegen habe ich auch schon ausgeben lassen dort ist er soweit wie er sein soll also mit dem Kompletten usernamen.

Mein Code
BlitzBasic: [AUSKLAPPEN]

p1=Instr(txt$,"|")
susername$=Left$(txt$,p1)

p2=Instr(txt$,"|",p1)
sx_coor=Mid$(txt$,p2+1)

p3=Instr(txt$,"|",p2+1)
sy_coor=Mid$(txt$,p3+1)


p3=Instr(txt$,"|",p3+1)
shitpoints=Mid$(txt$,p3+1)

p4=Instr(txt$,"|",p3+1)
sshield=Mid$(txt$,p4+1)

p5=Instr(txt$,"|",p4+1)
sschaden=Mid$(txt$,p5+1)

p6=Instr(txt$,"|",p5+1)
srotation=Mid$(txt$,p6+1)

p7=Instr(txt$,"|",p6+1)
sInLog$=Mid$(txt$,p7+1)


Das "s" vor den Variablen steht für second weil wären die gleich hätte das Probleme mit den anderen Variablen gegeben (sind Global)
So sieht ein string aus bevor er Zerlegt wurde:
BlitzBasic: [AUSKLAPPEN]

txt$="Bernhard|100|140|306000|250000|35000|6|Siegfried"

Und der Username würde in dem Fall mit dem Fehler so ausgegeben werden :
BlitzBasic: [AUSKLAPPEN]

ssusername$="hard|"


Problem ich benutze den Usernamen um die Types abzugleichen und beim richtigen User die Daten zu "Updaten".
Sonst gibts ne menge Bugs Very HappyD

Bin über jede Antwort erfreut

Mfg

EDIT:

Noch ne kleine Frage passt zwar nicht dazu aber habe mit der Sufu nix gefunden.. kann ich auch breite Linien Zeichnen? Also normal sind die ja nur 1 px dick wenn ich Sie jetzt 5px dick haben will mache ich es indem ich 5Linien ziehe und die dan um 1px versetze ..gibts da noch eine andere möglichkeit?
*Acc deaktiviert*

DAK

BeitragMo, März 03, 2014 9:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir geht dein Sample. Lass dir mal direkt davor ausgeben, ob dein txt$ auch tatsächlich den Inhalt hat, den du willst (am besten schreib ein Stop davor und gehe das im Debug Modus (der aktiviert sein muss) Schritt für Schritt durch).

@Linien:
Sind diese Linien horizontal oder vertikal kannst du Rect(x,y,width,height,1) verwenden (die 1 steht für solid, also gefüllt).
Ansonsten bleibt dir wohl nichts anderes über als fünf Linien.
Gewinner der 6. und der 68. BlitzCodeCompo

Eingeproggt

BeitragMo, März 03, 2014 12:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, wenn du ein Zeichen zuviel erhältst, ziehe eines wieder ab, sprich:
Code: [AUSKLAPPEN]
susername$=Left$(txt$,p1-1)


Was die anderen Werte angeht, so wäre es sauberer, du würdest den 3. Parameter von Mid benutzen. Dass dein Code funktioniert hast du nur der "bequemen" Integer-Konvertierung von BB zu verdanken, aber wenn du einen weiteren String irgendwo "mittendrin" hättest, würde der falsch ermittelt werden. Probiers aus Wink

Und zu guter Letzt: Wenn es sich um Daten von einem Server handelt, warum arbeitest du dann nicht gleich mit ReadInt und co? (Also vom Server müssen dann natürlich auch Integer gesendet werden). Das würde das ganze Zusammenbasteln und wieder zerlegen der Werte ersparen.

mfG, Christoph
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

SiegbertSchnößel

BeitragMo, März 03, 2014 12:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja habe ich mir auch überlegt aber muss nicht jedes mal wenn ich ein
Writeint stream,xy
Writeline stream,xy
etc.
schreibe bei jedem der Header und alles verschickt werden (22bytes ?)
und dann auf ne Antwort warten bis er weitermacht und das wäre bei TCP nicht so gut weil das ja das SPiel solange stoppt bis das OK vom Server kommt.. Also wollte ichs in einem String machen Very Happy

@DAK:
Hast recht Very Happy habe die Daten die vom Server kommen ausgeprintet und die kommen schon falsch an also iwo "verschluckt" er da die Daten
Beim Server koommen die Daten richtig an und ausgegeben bevor sie gesendet werden (im Client) habe ich schon gemacht da sind die so wie die sein sollen...Der Server "printet" die Daten ja auch richtig aus also da steht ja
"Posting Data: xyxy" da sind die Daten auch komplett...
Komisch Very Happy

Mfg
*Acc deaktiviert*

Eingeproggt

BeitragMo, März 03, 2014 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du TCP benutzt, ja, hast du Recht. Ich glaub da hast sogar mehr als 22byte Header...
Aber für Spiele nutzt man ja auch zumeist UDP, gerade für so sachen wie Position. Und da schreibst du alles in ein Packet und sendest das dann auf Befehl.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

SiegbertSchnößel

BeitragMo, März 03, 2014 13:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja ich weiß aber ich habe den Server jetzt in TCP und findes eig. garnicht so langsam Very Happy sende momentan alle 80ms ein Packet und kommt TCP auf nem Holz PC gut hinterher Very Happy Später wenn dann kaum noch bugs sind mache ich das es so alle 100-150ms nur packete sendet und Interpretiere dann die Bewegung ein Very Happy

Mfg
*Acc deaktiviert*

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group