Avatar billede Slettet bruger
22. juli 2003 - 06:15 Der er 39 kommentarer og
1 løsning

Nåde med at læse i en fil

Hej jeg er ved at vil lave et stastik system og vil høre om der er en der kan hjælpe mig jeg skal læse en fil der ser sådan ud

#Software: Microsoft Internet Information Services 5.1
#Version: 1.0
#Date: 2003-07-22 04:11:12
#Fields: date time c-ip cs-username s-sitename s-computername s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status sc-win32-status sc-bytes cs-bytes time-taken cs-version cs-host cs(User-Agent) cs(Cookie) cs(Referer)
2003-07-22 04:11:12 127.0.0.1 - W3SVC1 B01 127.0.0.1 80 GET / - 200 0 2441 319 260 HTTP/1.1 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1) - -
2003-07-22 04:11:21 127.0.0.1 - W3SVC1 B01 127.0.0.1 80 GET /login/ - 200 0 1286 353 50 HTTP/1.1 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1) - http://127.0.0.1/


Denne linde fortæller mig hvordan hver line er delt op og hvad de står for.

#Fields: date time c-ip cs-username s-sitename s-computername s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status sc-win32-status sc-bytes cs-bytes time-taken cs-version cs-host cs(User-Agent) cs(Cookie) cs(Referer)

Da jeg ik er så god til at arbejde med fil i vb håber jeg på der er en der vil hjælpe..
Avatar billede nmh Nybegynder
22. juli 2003 - 09:14 #1
Du burde nok sige noget mere. Der er tilsyneladende tale om en tekstfil, og det er da let at læse en sådan. Problemet er så:
Hvad skal du så gøre med dine data. Jeg giver omlidt teksten til et lille VB-program der kan hente en tekstfil ind i en tekststreng, men så er det dit eget problem at gøre noget med den.
Avatar billede nmh Nybegynder
22. juli 2003 - 09:51 #2
Her er en lille procedure, som vil læse en tekstfil. For øjeblikket vil den hente filen D:\test.txt og udskrive den i en msgbox (det er for at teste).

Private Sub HentFil()
  Dim FileName As String
  Dim FileNr As Integer
  Dim txt As String
  FileName = "D:\test.txt"
  FileNr = FreeFile
  Open FileName For Input As FileNr
  txt = Input(LOF(FileNr), FileNr)
  MsgBox txt
  Close (FileNr)
End Sub
Avatar billede Slettet bruger
22. juli 2003 - 12:07 #3
Ja det er da meget findt men hvordan vil du ku finde det du skal sætte i db ?
for jeg skal ik har alt i db kun

2003-07-22 04:11:12 127.0.0.1 - W3SVC1 B01 127.0.0.1 80 GET / - 200 0 2441 319 260 HTTP/1.1 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1) - -
2003-07-22 04:11:21 127.0.0.1 - W3SVC1 B01 127.0.0.1 80 GET /login/ - 200 0 1286 353 50 HTTP/1.1 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1) - http://127.0.0.1/

Men det skal være delt op så dato kommer i en og time og er time ik i #Fields skal den ik med.
Avatar billede nmh Nybegynder
22. juli 2003 - 12:15 #4
Er det et eksempel på indholdet af en linie i din tekstfil, du lige har vist?
Er det så kun 2003-07-22 og 04:11:12 der skal gemmes?
og hvis klokkeslættet mangler så kun datoen?

Har jeg nu forstået det rigtigt? Hvis det er tilfældet er det let at pille de to dele ud.
Avatar billede Slettet bruger
22. juli 2003 - 12:41 #5
Hvis du ser i den fil. Så er der et sted der står #Fields: Den skal bestemme hvad der skal være af felter.
Avatar billede nmh Nybegynder
22. juli 2003 - 14:20 #6
Her er endnu et forslag:
Her er en lille programstump, som sætter en tekststreng t lig linien fra din fil. Det virker som om at tegnet " " (mellemrum)
er skilletegn imellem dine felter.
Programmet splitter derefter linien op til en tabel
A(0), A(1),.....
Det sker med ordren A=split(A," ")
Du har nu adgang til alle dine felter.
Det er vigtigt at A blot erklæres som dim A.

Nedenstående lille program vil udskrive antallet af felter samt det 1., det 2. og det sidste.

Her er så koden:

dim t as string
dim A
dim n byte
t="2003-07-22 04:11:12 127.0.0.1 - W3SVC1 B01 127.0.0.1

80 GET / - 200 0 2441 319 260 HTTP/1.1 127.0.0.1 "
t=t &

"Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1) - -

"
t=t & "2003-07-22 04:11:21 127.0.0.1 - W3SVC1 B01

127.0.0.1 80 GET /login/ - 200 0 1286 353 50 HTTP/1.1

127.0.0.1 "
t=t &

"Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1) -

http://127.0.0.1/"
A=split(t," ")
n=Ubound(A)
MsgBox n
MsgBox A(0)
MsgBox A(1)
MsgBox A(n)

Du skal så blot læse en linie ad gangen fra din tekstfil, splitte den op og gemme de relevante felter i din database.
Hvis dette er brugbart kan jeg ændre proceduren, så den henter en linie ad gangen.
Avatar billede nmh Nybegynder
22. juli 2003 - 14:22 #7
Den meget lange tekststreng blev forkludret da det blev skrevet ud her på siden, men det kan du nok selv ændre. Meningen er at t er lig hele tekststrengen.
Avatar billede Slettet bruger
22. juli 2003 - 15:21 #8
Det kan jeg da ik bruge.

Kan du ik et scrip der kan giv mig line for line da det ense der er fast i den txt er de 4 linder i toppe. rasten kan vær alt fra 1 til 4 mil. jeg kender godt det med at splite.
Avatar billede Slettet bruger
22. juli 2003 - 15:22 #9
Da data start fra 5 og ned af. og line 4 bestemmer hvad den indholder.
Avatar billede nmh Nybegynder
22. juli 2003 - 15:30 #10
Jo det kan jeg godt, men så må du forklare præcist, hvad det er du vil have.

4 linier i toppen?? mener du  de 4 første linier i filen?

Er det blot et script, der læser linierne en ad gangen du ønsker, og så klarer du selv at pille de relevante felter ud?
Avatar billede nmh Nybegynder
22. juli 2003 - 15:32 #11
Din forrige bemærkning krydsede min.
Hvordan ser så en linie med data ud? Nu forstår jeg de 4 første linier fortæller hvad der kommer.
Avatar billede Slettet bruger
22. juli 2003 - 16:07 #12
#Fields: fortæller hvor mangen felter der er og hvad de heder og alt det

Føste script skal start med at finde linde med #Fields: og smide de ord i en en arry. til sender brug.

så kommer data fra linde 5 og ned.

Hvis vi nu siger der stå i #Fields: date time c-ip cs-username

tager den data fra line 5 og putter dem inde i text felt i db

Alså dato i date og time i timefelt.
og er der så ik et C-ip i filen så hopper den vider.
Avatar billede nmh Nybegynder
22. juli 2003 - 16:28 #13
Det er stadig for uklart: Hvilket skilletegn bruges i data-linierne 5,6,7...
Jeg troede først det var blanktegn (mellemrum). Men er det i virkeligheden tegnet '-' nogle gange og andre gange '/'. Give et eksempel på en linie med data. En komplet linie, og fortæl
hvilke skilletegn, der er.
Avatar billede Slettet bruger
22. juli 2003 - 16:39 #14
Nej - betyder kun at der ik er data
Avatar billede nmh Nybegynder
22. juli 2003 - 16:47 #15
2003-07-22 04:11:12 127.0.0.1 - W3SVC1 B01 127.0.0.1 80 GET / - 200 0 2441 319 260
Dette er en del af en datalinie.Er der så datafelt med værdien '/'?
Er blanktegn skilletegn imellem felter?
Avatar billede Slettet bruger
22. juli 2003 - 17:05 #16
Ja tom felt er lig med - og / er så vidt jeg kan se en del af sætning
Avatar billede Slettet bruger
22. juli 2003 - 17:07 #17
/ er en del af text
Avatar billede nmh Nybegynder
22. juli 2003 - 17:14 #18
det vil sige, at hvis en linie ser sådan ud
123 456 / - - 789 ......
så er der her vist indholdet af 6 felter:
felt1: 123
felt2:456
felt3: /
felt4 og felt 5 er tomme
felt6: 789
Avatar billede nmh Nybegynder
22. juli 2003 - 17:18 #19
Vil du være tilfreds, hvis du får en subrutine, der læser en linie ad gangen og splitter den op i felter, så du selv kan gemme dem i din database?
Den 4. linie er det så den, hvor feltnavnene er gemt?
Avatar billede Slettet bruger
22. juli 2003 - 17:23 #20
Prøv at kom med dit forslag så skal jeg se på det. og fortælle hvad der mangler.
Avatar billede nmh Nybegynder
22. juli 2003 - 17:29 #21
Du må lige svare på,hvad jeg spørger dig om.
Er min opfattelse af feltopdelingen rigtig? (se forrige kommentar)
Avatar billede Slettet bruger
22. juli 2003 - 17:54 #22
Ja, ser ud til at passe er lidt usiker på det med /, men vi prøver bare der
Avatar billede nmh Nybegynder
22. juli 2003 - 17:57 #23
Jeg holder en pause nu fra det her, men i løbet af aftenen kommer jeg med noget.
Avatar billede Slettet bruger
22. juli 2003 - 18:08 #24
OK, Det vil bare være supper
Avatar billede Slettet bruger
22. juli 2003 - 18:09 #25
Ellers er du velkommen til at ringe til mig på 60629711, da jeg lige er væk fra min putter
Avatar billede nmh Nybegynder
22. juli 2003 - 19:56 #26
Nu kommer to små procedurer skrevet i Visual Basic. Den første læser  4 linier fra en text fil. Den 4. linie splittes op i en tabel Fnavn(0), Fnavn(1),..... Nu har du dine feltnavne.

Den anden procedure springer de 4 første linier over og læser derefter linie ad gangen. Teksten i linien splittes op, og så er det meningen, du skal gemme i din database.
Avatar billede Slettet bruger
22. juli 2003 - 20:06 #27
Er du ik på icq eller msn ?
Avatar billede nmh Nybegynder
22. juli 2003 - 20:34 #28
Dim Fnavn, N
Function FeltNavne()
  Dim txt As String
  Dim i As Byte
  Open "D:\test.txt" For Input As #1
  For i = 1 To 4
    Line Input #1, txt
  Next
  FeltNavne = Split(txt, " ")
  Close #1
End Function

Sub HentData()
  Dim txt As String
  Dim i As Byte
  Dim N As Byte
  Open "D:\test.txt" For Input As #1
  For i = 1 To 4
    Line Input #1, txt
  Next
  While Not EOF(1)
    Line Input #1, txt
    A = Split(txt, " ")
    N = UBound(A)
    'Nu har du dine data gemt i tabellen A
    'Du skal nu se at gemme dem i din database
    'A(0) i første felt, A(1) i andet felt...
  Wend
  Close #1
End Sub

For at hente feltnavnene skal du skrive
Fnavn=Feltnavne
N=Ubound(Fnavn)
For at hente og gemme dine data skal du blot aktivere proceduren HentData
Avatar billede Slettet bruger
22. juli 2003 - 22:32 #29
Virker ik
Avatar billede nmh Nybegynder
22. juli 2003 - 22:40 #30
Jo det virker, men det afhænger selvfølgelig af hvordan du håndterer det. Hvad har du gjort, siden du straks kan sige, det ikke virker?
Avatar billede nmh Nybegynder
22. juli 2003 - 22:43 #31
Det var jo meningen, du selv skulle sørge for at lave en databasetabel, som skal indeholde de mange felter som søjler.
Avatar billede Slettet bruger
23. juli 2003 - 00:20 #32
Jeg har ik ku får det til at virker men har lave et script selv ud fra din data

men der kommer en fejl jeg ik kan finde ud af..

min souces

Dim Fnavn, N

Function hent(dat, id)
Dim datatt() As String
If dat <> "" Then
datatt = Split(dat, " ")
hent = datatt(id)
Else
hent = "Err"
End If
End Function


Function datakontrol()
Dim dat1 As String
  Open "D:\W3SVC1\ex030315.log" For Input As #1
  For i = 1 To 3
    Line Input #1, txt
    Print txt
  Next
  Line Input #1, Datatxt
  dat1 = Replace(Datatxt, "#Fields: ", "")
  'Print hent(dat1, 2)
  While Not EOF(1)
  Lin = Lin + 1
    Line Input #1, txt
    Print Lin
    Print "---"
    a = Split(txt, " ")
    For t = 0 To UBound(a)
    Print hent(dat1, t) & " : " & a(t)
    Next t
    Print " "
  Wend
  Close #1

End Function

Min data

#Software: Microsoft Internet Information Services 5.0
#Version: 1.0
#Date: 2003-03-15 06:00:04
#Fields: date time c-ip cs-username s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status cs(User-Agent)
2003-03-15 06:00:04 127.0.0.1 - 127.0.0.1 80 GET /iisstart.asp - 302 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0)
2003-03-15 06:00:04 127.0.0.1 - 127.0.0.1 80 GET /localstart.asp - 401 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0)
2003-03-15 06:00:04 127.0.0.1 WEBSERVER\Administrator 127.0.0.1 80 GET /localstart.asp - 200 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0)
2003-03-15 06:00:04 127.0.0.1 WEBSERVER\Administrator 127.0.0.1 80 GET /win2000.gif - 200 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0)
2003-03-15 06:00:04 127.0.0.1 - 127.0.0.1 80 GET /warning.gif - 200 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0)
2003-03-15 06:00:04 127.0.0.1 WEBSERVER\Administrator 127.0.0.1 80 GET /web.gif - 200 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0)
2003-03-15 06:00:04 127.0.0.1 - 127.0.0.1 80 GET /mmc.gif - 200 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0)

Lige nu viser jeg det bare i en frm..
Avatar billede Slettet bruger
23. juli 2003 - 03:20 #33
æv fejl. har lige funde ud af at i den datafil er mere sjov at leje med en jeg trod.

det text jeg har i toppe kan den godt finde på at kom med igen.
Avatar billede nmh Nybegynder
23. juli 2003 - 10:29 #34
Ok, men har du så ikke fået besvaret dit spørgsmål nu?
Nu kan du faktisk læse dine data, men at behandle dem er jo en langt større og mere vanskelig sag.
Avatar billede Slettet bruger
23. juli 2003 - 12:23 #35
Ja, men jeg vil høre om du har lyst til at hjælpe mig. du kan godt får flere point. da jeg ved det er en lidt stor opgave. men jeg skal ha det produkt færdig. så jeg vil bliv glad hvis du gider at hjælpe mig..
Avatar billede nmh Nybegynder
23. juli 2003 - 17:10 #36
Jo, det kan vi nok tale om. Men jeg synes vi skal afslutte dette spørgsmål, og så skal du formulere et nyt spørgsmål, der går på de næste problemer. Så kan du også håbe på at nogle flere vil blande sig og komme med gode ideer.
Avatar billede Slettet bruger
23. juli 2003 - 18:59 #37
Tja men jeg kan jo kun lukke det her hvis du lave et svar..
Avatar billede nmh Nybegynder
23. juli 2003 - 19:32 #38
Her er det.
Avatar billede Slettet bruger
24. juli 2003 - 13:44 #39
Lukke
Avatar billede nmh Nybegynder
24. juli 2003 - 22:42 #40
Jeg takker for point
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging