Seite 1 von 2

Aus einem String Teile herausfiltern

Verfasst: 02.01.2005 16:02
von MJP
Frohes neues Jahr euch allen :mrgreen:
Ich mache einen Chat mit meheren Raümen um nicht immer einen neuen Server auf zu machen habe ich mir das ausgedacht:

Code: Alles auswählen

{ROOM}TestRoom{/ROOM}{CLIENT}PIMP{/CLIENT}{MESSAGE}TEST{/MESSAGE}{FONT}ARIAL{/FONT}{COLOR}black{/COLOR}{BGCOLOR}green{/BGCOLOR}{SIZE}26{/SIZE}
Hiermit wollte ich die Infos rausfiltern aber irgendwie mach ich da was falsch :cry: :

Code: Alles auswählen

Nachricht.s="{ROOM}TestRoom{/ROOM}{CLIENT}PIMP{/CLIENT}{MESSAGE}TEST{/MESSAGE}{FONT}ARIAL{/FONT}{COLOR}black{/COLOR}{BGCOLOR}green{/BGCOLOR}{SIZE}26{/SIZE}"         
          sytxR = FindString(Nachricht, "{/ROOM}", 1)
          room.s= Mid(Nachricht,7,sytxR)  :Debug room
         ;-Clientabrage
          sytxC = FindString(Nachricht, "{CLIENT}", 1) 
          sytxC2= FindString(Nachricht, "{/CLIENT}", 1) 
          client.s= Mid(Nachricht,sytxC+8,sytxC2)  :Debug client
         ;-Nachricht
          sytxM = FindString(Nachricht, "{MESSAGE}", 1) 
          sytxM2= FindString(Nachricht, "{/MESSAGE}", 1)                                                                 
          message.s= Mid(Nachricht,sytxM+9,sytxM2)  :Debug message
         ;-Font
          sytxF = FindString(Nachricht, "{FONT}", 1)
          sytxF2= FindString(Nachricht, "{/FONT}", 1)                                                                
          font.s= Mid(Nachricht,sytxF+6,sytxF2)  :Debug font
          ;-Farbe
          sytxCo = FindString(Nachricht, "{COLOR}", 1) 
          sytxCo2= FindString(Nachricht, "{/COLOR}", 1)                                                                 
          color.s= Mid(Nachricht,sytxCo+7,sytxCo2)  :Debug color
          ;-Farbe
          sytxBc = FindString(Nachricht, "{BGCOLOR}", 1) 
          sytxBc2= FindString(Nachricht, "{/BGCOLOR}", 1)                                                                 
          bgcolor.s= Mid(Nachricht,sytxBc+8,sytxBc2)  :Debug bgcolor      
          ;-Groesse
          sytxS = FindString(Nachricht, "{SIZE}", 1)
          sytxS2= FindString(Nachricht, "{/SIZE}", 1)                                                                
          size.s= Mid(Nachricht,sytxS+7,sytxS2)  :Debug size
Das bekomme ich immer raus:

Code: Alles auswählen

TestRoom{/ROOM
PIMP{/CLIENT}{MESSAGE}TEST{/MESSAG
TEST{/MESSAGE}{FONT}ARIAL{/FONT}{COLOR}black{/COLOR}{BGC
ARIAL{/FONT}{COLOR}black{/COLOR}{BGCOLOR}green{/BGCOLOR}{SIZE}26{/SIZE}
black{/COLOR}{BGCOLOR}green{/BGCOLOR}{SIZE}26{/SIZE}
green{/BGCOLOR}{SIZE}26{/SIZE}
26{/SIZE}
Obwohl das ergebnis eigentlich das hier sein sollte: :?

Code: Alles auswählen

TestRoom
PIMP
TEST
ARIAL
black
green
26
THx 4 Help MJP :mrgreen:

Verfasst: 02.01.2005 16:30
von Franky
Du nutzt mid falsch

Laut hilfe:
Startposition, länge

Bei dir wirds so gemacht:
Startposition, endposition

Als Beispiel:

Code: Alles auswählen

sytxR = FindString(Nachricht, "{/ROOM}", 1)
          room.s= Mid(Nachricht,7,sytxR)  :Debug room 
Müsste sein:

Code: Alles auswählen

sytxR = FindString(Nachricht, "{/ROOM}", 1)
          room.s= Mid(Nachricht,7,sytxR-7)  :Debug room 
also hier statt
sytxR
sytxR-7
als 3. Parameter von Mid

Verfasst: 02.01.2005 16:54
von MJP
uppsss :oops:
aber wie mache ich das jetzt z.B beim zweiten weil so geht es ja nicht:

Code: Alles auswählen

          sytxC = FindString(Nachricht, "{CLIENT}", 1) 
          sytxC2= FindString(Nachricht, "{/CLIENT}", 1) 
          client.s= Mid(Nachricht,sytxC+8,sytxC2-9)  :Debug client
[edit]
hat sich erledigt habs selber rausgefunden :mrgreen: :

Code: Alles auswählen

          sytxC = FindString(Nachricht, "{CLIENT}", 1) 
          sytxC2= FindString(Nachricht, "{/CLIENT}", 1) 
          clientb.s= Mid(Nachricht,sytxC+8,sytxC2-9)  
          clientend=Len(clientb)
          clientstart=FindString(clientb,"{/CLIENT}",1)
          clientbb.s=Mid(clientb,clientstart,clientend)
          client.s=RemoveString(clientb,clientbb,1) :Debug client

Re: Aus einem String Teile herausfiltern

Verfasst: 02.01.2005 18:13
von Kiffi
> habe ich mir das ausgedacht:

Code: Alles auswählen

{ROOM}TestRoom{/ROOM}{CLIENT}PIMP{/CLIENT}{MESSAGE}TEST{/MESSAGE}{FONT}ARIAL{/FONT}{COLOR}black{/COLOR}{BGCOLOR}green{/BGCOLOR}{SIZE}26{/SIZE}
wieso ein propietäres Format entwickeln, wenn's sowas ähnliches schon gibt:

Code: Alles auswählen

<ROOM>TestRoom</ROOM><CLIENT>PIMP</CLIENT>[...]
Du brauchst also nur die geschweiften Klammern durch spitze zu ersetzen.
Das nennt sich dann XML :)

Grüße ... Kiffi

P.S.: Die entsprechende Userlib zum Parsen von XML gibt's in ein paar
Tagen.

Verfasst: 03.01.2005 21:08
von MJP
Was ist XML??

Verfasst: 03.01.2005 21:29
von freedimension

Verfasst: 03.01.2005 23:23
von MVXA
[offtopic]
was habt ihr denn alle gegen das gute alte Byte protokoll :freak: ? Ist doch wesentlich effektiver und ist kleiner im Packet und kann somit schneller versand werden.
[/offtopic]

Verfasst: 03.01.2005 23:43
von Kiffi
> Ist doch wesentlich effektiver und ist kleiner im Packet und kann somit
> schneller versand werden.

kleiner: mag sein

effektiver: Ansichtssache. Definiere 'effektiv'. Spätestens, wenn Du die Daten
komfortabel weiterverarbeiten möchtest, wird so ein selbstgefriemelter
propietärer Bytecode schnell zur Entwicklungsbremse.

Grüße ... Kiffi

Verfasst: 04.01.2005 00:04
von MVXA
Kiffi hat geschrieben:> Ist doch wesentlich effektiver und ist kleiner im Packet und kann somit
> schneller versand werden.

kleiner: mag sein

effektiver: Ansichtssache. Definiere 'effektiv'. Spätestens, wenn Du die Daten
komfortabel weiterverarbeiten möchtest, wird so ein selbstgefriemelter
propietärer Bytecode schnell zur Entwicklungsbremse.

Grüße ... Kiffi
Nicht unbedingt. Wenn du vorher eine anständige Form für ein Paket hast und dann alle Befehle auf Papier notierst kann das ziehmlich Vorteilhaft sein. Außerdem kann man mit einer richtigen Paket basis sogar überprüfen, ob ein Paket fehlerhaft ist. Die Möglichkeiten sind grenzenlos. Ich würde eher behaupten, dass nur diese Programmierart auf dauer die Entwicklung beschleunigen kann. So kann man z.b. auch ein sicheres Log-In System aufbauen.

Verfasst: 04.01.2005 00:13
von Kiffi
> Wenn du vorher eine anständige Form für ein Paket hast und dann alle
> Befehle auf Papier notierst kann das ziehmlich Vorteilhaft sein.

siehst Du: mit XML muss man noch nicht einmal irgendwas notieren, weil
die Daten im Klartext inklusive Beschreibung vorhanden sind. ;)

> Außerdem kann man mit einer richtigen Paket basis sogar überprüfen,
> ob ein Paket fehlerhaft ist.

dito mit XML. Hier muss man allerdings nicht selber prüfen. Das macht der
Parser von ganz alleine.

> Ich würde eher behaupten, dass nur diese Programmierart auf dauer die
> Entwicklung beschleunigen kann.

ich habe gegenteilige Erfahrungen gemacht.

Grüße ... Kiffi