Toon posts:

[VB.NET] Een reeks aan Chars naar String

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik heb een raar probleem, ik hou me ff bezig get dotnetwinpcap (winpcap lib voor .NET).
Dit dient om packets te sniffen op een pc.
Packets binnenlezen lukt me perfect, ik kan ze in een textbox zetten enz, allemaal geen probleem. Maar als ik probeer alle chars in 1 string te zetten dan lukt het niet...

code:
1
2
3
4
5
Private Sub cap_OnReceivePacket(ByVal sender As Object, ByVal p As PacketHeader, ByVal s() As Byte) Handles cap.OnReceivePacket
        For i As Integer = 0 To p.Caplength - 1
            TextBox1.AppendText(System.Convert.ToChar(s(i)).ToString())
        Next
End Sub


Dit werkt dus perfect, de packet data staat in de textbox, maar dat verloopt vrij traag omdat dit karakter per karakter gaat gaan toevoegen aan de textbox.
Hetgeen ik zou willen is dat ik iedere lijn aan data kan gaan analyseren.
Als de for loop ten einde is heb ik een volledige lijn. Maar het lukt me simpelweg niet om al die chars in 1 string te zetten...

Wat ik eerst geprobeerd heb:
code:
1
2
3
4
5
        Dim str As String
        For i As Integer = 0 To p.Caplength - 1
            str = str & System.Convert.ToChar(s(i)).ToString
        Next
        TextBox1.AppendText(str)

Dit werkt dus niet... De char kan hij inlezen, maar als hij hem toevoegd aan de string is de char verdwenen.
Maar als ik dan het volgende probeer:
code:
1
2
3
        For i As Integer = 0 To p.Caplength - 1
            str = System.Convert.ToChar(s(i)).ToString & str
        Next

Dan werkt het wel, staat men volledige lijn in 1 string, maar alle chars in omgekeerde volgorde. Dit is puur als referentie, ze moeten wel degelijk in de juiste volgorde staan :P

Verder heb ik nog wat String methodes gebruikt maar zonder resultaat.
Iemand een idee hoe ik dit werkende krijg?

edit:
ff code-tags toegevoegd

[ Voor 3% gewijzigd door whoami op 10-09-2005 15:02 ]


  • Pocketware
  • Registratie: December 2000
  • Laatst online: 22:22

Pocketware

__________________

Je moet gebruik maken van een StringBuilder. Deze is bedoeld om string (en chars) te concateneren.

voorbeeld:
code:
1
2
3
4
5
6
7
8
9
Private Sub cap_OnReceivePacket(ByVal sender As Object, ByVal p As PacketHeader, ByVal s() As Byte) Handles cap.OnReceivePacket
        Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder

        For i As Integer = 0 To p.Caplength - 1
            sb.Append(System.convert.ToString(s(i))
        Next

        TextBox1.Text = sb.ToString
    End Sub

[ Voor 2% gewijzigd door whoami op 10-09-2005 15:02 . Reden: code tags toegevoegd ]

_______________________


Verwijderd

Topicstarter
als ik een StringBuilder gebruik dan voegt em in de for loop iedere keer het karakter toe, maar als hij aan sb.toString() komt, komt er niets uit...
Als ik een watch aan sb hang, dan zie ik hem nochtans de items optellen.

edit:
Hier ff een voorbeeld van wat er uit komt: http://users.pandora.be/-freak-/dump.txt
Zoals ge ziet zit er redelijk wa junk code in, en da is volgens mij de oorzaak. En al die junk code heb ik toch ni nodig, enkel de leesbare tekst...

Die junk code is afkomstig van afbeeldingen, filmkes, alles die geen tekst is :)

[ Voor 59% gewijzigd door Verwijderd op 10-09-2005 14:00 ]


  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Is Encoding.GetString niet makkelijker?

Visual Basic .NET:
1
2
3
Private Sub cap_OnReceivePacket(ByVal sender As Object, ByVal p As PacketHeader, ByVal s() As Byte) Handles cap.OnReceivePacket
   TextBox1.Text = System.Text.Encoding.Default.GetString(s)
End Sub

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


Verwijderd

Topicstarter
nope werkt ook ni, er komt niets in de textbox.

Nu ik er over denk moet het toch iets te maken hebben met die chars. Bepaalde chars die niet in een string mogen ofzo. Tis een aardig probleem...

edit:
ben een stap verder geraakt, ik heb met een reguliere expressie gecheckt als het karakter een letter is en enkel deze doorgelaten. Dan werkt het weer....

Hoe kan ik nu perfect gaan controleren welke tekens mogen doorgelaten worden en welke niet?

[ Voor 40% gewijzigd door Verwijderd op 10-09-2005 15:28 ]