[VB.net] W3C formaat lezen

Pagina: 1
Acties:

  • Remco
  • Registratie: Januari 2001
  • Laatst online: 21-08 16:11
Ik moet een isa-log inlezen en bewerken.
Nu is dit log opgemaakt in w3c-formaat, dus dat is tab-limited.
Appeltje eitje dus.
Maar....
Er staat ook een header in:
Bovenste stukje van de log, en even wat veldjes verwijdert, anders word het zo'n lange regel:
code:
1
2
3
4
5
6
#Software: Microsoft(R) Internet Security and Acceleration Server 2000
#Version: 1.0
#Date: 2003-05-08 01:59:36
#Fields: c-ip   cs-username c-agent date    time
172.16.3.11 anonymous   Symantec LiveUpdate 
172.16.3.11 anonymous   Symantec LiveUpdate


Ik heb al een aantal dingen geprobeerd om het voor elkaar te krijgen dat de 1e vier regels niet meegenomen worden.

1
Karakter voor karakter inlezen.
Als het karakter # voorkomt, dan doorlezen tot en met een [enter] karakter.
Daarna weer opnieuw testen.
Als het karakter # niet voorkomt, het karakter wegschrijven naar een tekstboxje.
Op deze manier hoort hij dus de 1e 4 regels over te slaan, maar schijnbaar is het [enter] karakter niet aanwezig :?

2
Een regel inlezen.
Nu het 1e karakter testen op een #.
Op een of andere manier gaat mij dat ook niet lukken.
Ik kreeg het niet voor elkaar om dat karakter te lezen, terwijl ik denk dat dit de juiste manier is.
Hierbij de code van optie 2:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_
 Handles Button1.Click
        FileOpen(1, "J:\Mijn Documenten\Visual Studio Projects\isaserver _
logs\webextd20030508.log", OpenMode.Binary)
        RichTextBox1.Text = ""
        Dim a As Char
        Dim zin As String
        Dim teller As Integer = 0
        Do Until teller = 1000
            zin = LineInput(1)
            a = InputString(1, 1)
            If a <> Chr(35) Then
                zin = LineInput(1)
                RichTextBox1.Text = zin
                teller += 1
            End If
        Loop
    End Sub

Ik lees in deze code maar even tot de 1000, omdat de log zelf zo'n 5 Mb groot is, dat duurt mij steeds te lang om even te testen.

Wie kan mij een beetje verder op gang helpen hiermee ?
Zowel op google als msdn als F1 is niet te doen met deze "search".

The best thing about UDP jokes is that I don't care if you get them or not.


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Regular Expressions kunnen een oplossing zijn.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • LoekD
  • Registratie: Augustus 2000
  • Laatst online: 09-08 16:24
Probeer anders a <> '\n' in plaats van Chr(35).
(of werkt dat alleen in C#?)

loading...


  • sjoerdb2
  • Registratie: Juli 2001
  • Laatst online: 09-05-2025
en als je gewoon de 1e 4 regels overslaat?

  • BOOTZ
  • Registratie: Maart 2001
  • Laatst online: 17-03 09:38
waarom open je je file als binary? het blijft een textfile :o

ik zou het zo doen: (als je zeker weet dat er in je logfile nergens een komma voorkomt)
Visual Basic:
1
2
3
4
5
6
7
8
9
open "logfile.log" for input as #1
do
  input #1,temp$
  if left$(temp$,1) <> "#" then 
    RichTextBox1.Text = temp$
    teller = teller + 1
  end if
loop until eof(1)
close #1
LoekD schreef op 30 juni 2003 @ 20:45:
Probeer anders a <> '\n' in plaats van Chr(35).
(of werkt dat alleen in C#?)
\n enzo werken niet onder vb (afaik)

[ Voor 27% gewijzigd door BOOTZ op 30-06-2003 20:49 ]

Maak je eigen poll


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

sjoerdb schreef op 30 juni 2003 @ 20:47:
en als je gewoon de 1e 4 regels overslaat?
In mijn logfiles wil die ook nog wel eens tussendoor opduiken... :)
LoekD schreef op 30 June 2003 @ 20:45:
Probeer anders a <> '\n' in plaats van Chr(35).
(of werkt dat alleen in C#?)
Daar hebben ze in vb.net (en de vbfamilie) voor \r\n VbCrLf

[ Voor 37% gewijzigd door gorgi_19 op 30-06-2003 20:51 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • DukeMan
  • Registratie: Mei 2000
  • Niet online
Remc0 schreef op 30 juni 2003 @ 20:37:
Visual Basic .NET:
1
2
            zin = LineInput(1)
            a = InputString(1, 1)
Die inputstring, is dat een vb.net functie?
Wat anders kan je ook doen:
Visual Basic .NET:
1
a = zin.substring(0,1)

Daar staat dan de eerste letter van de zin in.

[ Voor 34% gewijzigd door DukeMan op 30-06-2003 21:11 ]


  • Remco
  • Registratie: Januari 2001
  • Laatst online: 21-08 16:11
BOOTZ schreef op 30 June 2003 @ 20:48:
waarom open je je file als binary? het blijft een textfile :o

ik zou het zo doen: (als je zeker weet dat er in je logfile nergens een komma voorkomt)
Visual Basic:
1
2
3
4
5
6
7
8
9
open "logfile.log" for input as #1
do
  input #1,temp$
  if left$(temp$,1) <> "#" then 
    RichTextBox1.Text = temp$
    teller = teller + 1
  end if
loop until eof(1)
close #1
_/-\o_
Wat kan het leven toch simpel zijn..........
Helemaal overeen gekeken deze oplossing.

Heb het alleen even moeten poorten naar vb.net ;)

Die komma maakt niet uit.
Ik gebruik dit bovenste alleen om de regels met # eruit te halen.
Daarna word hij tab-limited ingelezen naar access.

Tnx !

[ Voor 6% gewijzigd door Remco op 30-06-2003 21:45 ]

The best thing about UDP jokes is that I don't care if you get them or not.

Pagina: 1