[VB6] Zoeken naar Chr(13) met Instr.

Pagina: 1
Acties:

  • iznogood
  • Registratie: September 2001
  • Niet online
code:
1
b = InStr(1, Data, Chr(13), vbTextCompare)

Ik heb een probleem . Ik ben een irc client aan het schrijven en ik wil Chr(13) en Chr(20) eruit filteren, nu probeer ik hier de positie van te bepalen met Instr. maar om een of andere reden blijft deze b=0 terug geven, er staat wel degelijk wat in data.

Just as Good


Verwijderd

je moet die 1 weghalen, de eerste parameter is Data. Ook al beweerd intellisense wat anders. Volgens mij een of ander wazige bug.

dus:
code:
1
b = InStr(Data, Chr(13) + "")

  • iznogood
  • Registratie: September 2001
  • Niet online
code:
1
b = InStr(Data, Chr(13) + "")

b blijft 0
code:
1
b = InStr(Data, Chr(13))

Nu heb ik er dit van gemaakt, b blijft op 0 staan.

Just as Good


Verwijderd

En werkt dit:
code:
1
b = InStr(Data, vbCr)

(mischien is het ook vbLf)

Je hebt b wel goed gedeclareerd?

  • iznogood
  • Registratie: September 2001
  • Niet online
Ja, b is een integer, zou goed moeten zijn

vbCr = Carrage Return ( degene die ik zou moeten hebben )
vbLf = Line Feed ( hoeft ik niet te hebben )

Als ik zoek op de vbLf krijg ik netjes 60 terug. De vbCr werkt helaas niet, maar ik weet zeker dat deze aanwezig is. Ik kon hem wel op een zeer niet efficiente wijze vinden ( letter voor letter ) en dan "if blaat=chr(13) Then " maar ja dat wil ik niet.

Just as Good


  • iznogood
  • Registratie: September 2001
  • Niet online
code:
1
2
Data = Data + Chr(13)
b = InStr(Data, Chr(13))

Als ik dit doe detecteerd hij em wel .. Wel vaag, ik zou echt zweren dat er nog meer chr(13)'s inzaten ..

Just as Good


  • Kama
  • Registratie: Mei 2002
  • Laatst online: 03-09 09:19

Kama

Aritifical Intelligenticus

Wat dacht je hiervan:

NewString = Replace(OldString, vbCrLf, "")

vbCrLf is (zoals de naam doet vermoeden) een CR + een LF... Dat is de meest gebruikte "enter"..

Blijft wel een tikkeltje vreemd, want als er CRLF's in zitten zou je zeggen dat er ook CR's in zitten.

Niels


  • iznogood
  • Registratie: September 2001
  • Niet online
Ik ben er redelijk uit, er zaten geen echte enters in om een of andere vage reden ? :( Maar chr(10)'s .. Probleem is dus opgelost :)

Just as Good


  • Kama
  • Registratie: Mei 2002
  • Laatst online: 03-09 09:19

Kama

Aritifical Intelligenticus

Ehm.

Kijk es naar de functie "Replace"..

Niels


  • SvMp
  • Registratie: September 2000
  • Niet online
Op zondag 02 juni 2002 21:34 schreef iznogood het volgende:
Ik ben er redelijk uit, er zaten geen echte enters in om een of andere vage reden ? :( Maar chr(10)'s .. Probleem is dus opgelost :)
IRC is afkomstig uit de Unix-wereld zoals zo'n beetje alle TCP/IP meuk.

Daar werken ze niet met 13 en 10 als return, wat alleen bij DOS en Windows gebruikelijk is.
Dus je zult daar alleen 13 of 10 los aantreffen.

Verwijderd

Of Unix nu wel of niet met een CR werkt, in het RFC1459 staat:
IRC messages are always lines of characters terminated with a CR-LF (Carriage Return - Line Feed) pair, and these messages shall not exceed 512 characters in length, counting all characters including the trailing CR-LF.
Nu ben ik ook bezig met een IRC-client en uit ervaring kan ik je vertellen dat afhangt van de server/netwerk of er wel of geen CR's inzitten... Het is dus handig om de CR's te negeren (Replace(strIncoming,vbCR,vbNullString)) en vervolgens op LF's de regels eruit te halen... (Split(strIncoming,vbLF)).

  • iznogood
  • Registratie: September 2001
  • Niet online
Nu ben ik ook bezig met een IRC-client en uit ervaring kan ik je vertellen dat afhangt van de server/netwerk of er wel of geen CR's inzitten... Het is dus handig om de CR's te negeren (Replace(strIncoming,vbCR,vbNullString)) en vervolgens op LF's de regels eruit te halen... (Split(strIncoming,vbLF)).
Is eigenlijk wel een betere manier om te doen denk ik.. alleen zo rottig dat die fu**ing servers allemaal verschillend de data teruggeven aan de client.. Maakt het allemaal een stuk lastiger. Ze moeten zich gewoon netjes aan de RFC houden.

Just as Good


  • iznogood
  • Registratie: September 2001
  • Niet online
Op welk moment kan ik het beste de PASS, NICK en USER verzenden ? Ik vind dat dat in de RFC niet goed naar voren komt, of ik heb het over het hoofd gezien, maar volgens mij niet.

Just as Good


Verwijderd

Ik heb hem zelf al bij de Socket_Connect staan. Eerst de NICK en dan de USER...
Je moet goed opletten, hij connect pas door als je een goede PONG op de eerst PING hebt geantwoord.

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Nu het we toch over whitespaces en irc hebben, weet iemand hoe je een TAB vanuit PERL/Sockets naar irc stuurt?

http://www.perlmonks.com/index.pl?node_id=166716

  • iznogood
  • Registratie: September 2001
  • Niet online
Ik ken geen PERL, maar wat je in theorie zou moeten doen is ASCII code 20 ( meen ik ) verzenden met een Carriage Return en een LineFeed er achteraan.

Just as Good


Verwijderd

Tab = ascii 9 :)
Pagina: 1