Avatar billede train Nybegynder
09. februar 2004 - 10:16 Der er 8 kommentarer og
1 løsning

halvstor opgave

Jeg har nu kæmpet med denne opgave nogen tid of er ved at gå ud af mit gode skin, derfor ville hjælp blive modtaget med kyshånd.

Opgaven går ud på at jeg har en logfil der ser ca sådan her ud:

----------------------------
navn1 (10.140.31.44)
----------------------------
    * WINDOWS SERVER 2003, ENTERPRISE EDITION GOLD
    Note        MS03-030    819696
    Patch NOT Found    MS03-043    828035
----------------------------
navn2(10.140.31.45)
----------------------------
    * WINDOWS NT4 ENTERPRISE SP6A
    Note        MS02-008    318202
    Note        MS02-008    318203
    Note        MS02-008    317244
    Note        MS02-053    324096
    Note        MS02-065    329414
    Note        MS03-008    814078
    Patch NOT Found    MS03-011    816093
----------------------------
navn3(10.140.31.46)
----------------------------
    * WINDOWS NT4 ENTERPRISE SP6A
    Note        MS02-008    318202
    Note        MS02-008    318203
    Note        MS02-008    317244
    Note        MS02-053    324096
    Note        MS02-065    329414
    Note        MS03-008    814078
    Patch NOT Found    MS03-011    816093

Det jeg ønsker VB skulle lave er atoprette en ny fil hvor det hele bliver filtreret en smule og omskrevet til det her:

#09-02-04#, "navn1", "10.140.31.44", "WINDOWS SERVER 2003, ENTERPRISE EDITION GOLD", "Note", "MS03-030", "819696"

#09-02-04#, "navn1", "10.140.31.44", "WINDOWS SERVER 2003, ENTERPRISE EDITION GOLD", "Patch NOT Found", "MS03-043", "828035"

#09-02-04#, "navn2", "10.140.31.45", "WINDOWS NT4 ENTERPRISE SP6A", "Note", "MS02-008", "318202",

#09-02-04#, "navn2", "10.140.31.45", "WINDOWS NT4 ENTERPRISE SP6A", "Note","MS02-008", "318203",

hvor dagsdato kommer først, derefter servernavn, IP, serverinfo, scannings besked(note/warning/patch not found), MS nr, nummer.
Avatar billede train Nybegynder
09. februar 2004 - 10:17 #1
jeg mangler lige at fortælle at logfilen er en del længere end det jeg har vist her.
Avatar billede l3kris Nybegynder
09. februar 2004 - 17:55 #2
Hvordan ser din nuværende kode ud, og hvad er det, der ikke virker?
Avatar billede martin_moth Mester
09. februar 2004 - 19:46 #3
Står de ting du vil gemme ALTID i samme linie, samme placering i linien osv.?

Med Mid(), InStr(), Len(), InStr(), Left() og Right() vil du sagtens kunne opnå det du vil
Avatar billede kabbak Professor
09. februar 2004 - 23:53 #4
et forsøg I Vb6


Option Explicit
Dim LogData() As Variant
Dim NyLogData() As Variant
Private Sub Command1_Click()
Call hent
End Sub
Public Sub hent()
Dim Str As String, I As Long
I = 0
  Open "C:\log.txt" For Input As #1
  Do
  ReDim Preserve LogData(I)
      Line Input #1, LogData(I)
        I = I + 1
       
  Loop Until EOF(1)
Close #1

Call Filbehandling

  Open "C:\NYlog.txt" For Output As #1
For I = 0 To UBound(NyLogData)

  Print #1, NyLogData(I)
Next
Close #1


End Sub

Public Sub Filbehandling()
Dim P As Long, I As Long, Str As Variant, Navn As String, Ip As String, X As Long, A As Integer
Dim Ws As String, Note As String, OK As Boolean, MidStr() As Variant, GK As String, G As Integer
GK = Chr(34) & Chr(44) & Chr(34)

On Error Resume Next
For I = 1 To UBound(LogData)
LogData(I) = LTrim(LogData(I))
Next
P = 0
For I = 0 To UBound(LogData)
  OK = False
If Left(LogData(I), 1) = "-" Then GoTo Slettes
If I > 0 Then
    If Left(LogData(I - 1), 1) = "-" And Left(LogData(I + 1), 1) = "-" Then
      Str = Split(LogData(I), "(")
      Navn = Str(0)
      Ip = Left(Str(1), Len(Str(1)) - 1)
      I = I + 1
    GoTo Videre
    End If
  If Left(LogData(I), 1) = "*" Then
    Ws = LTrim(Right(LogData(I), Len(LogData(I)) - 1))
 
  Else
 
      Str = Split(LogData(I), " ")
      X = 0
      For A = 0 To UBound(Str)
        If Str(A) <> "" Then
        ReDim Preserve MidStr(X)
        MidStr(X) = Str(A)
        X = X + 1
        End If
        Next
       
  If UBound(MidStr) = 2 Then
  Note = ""
      For A = 0 To UBound(MidStr)
      Note = Note & MidStr(A) & Chr(34) & Chr(44)
      Next
      Note = Left(Note, Len(Note) - 1)
      OK = True
    GoTo Videre
    Else
   
      Note = ""
    For A = 0 To UBound(MidStr) - 2
        Note = Note & MidStr(A) & " "
        G = A + 1
    Next
      Note = Note & GK
      For A = G To UBound(MidStr)
          Note = Note & MidStr(A) & GK
      Next
      OK = True
      Note = Left(Note, Len(Note) - 2)
      End If
  End If
End If
Videre:
If OK = True Then
ReDim Preserve NyLogData(P)
NyLogData(P) = Chr(34) & Date & GK & Navn & GK & Ip & GK & Ws & GK & Note
'List1.AddItem Chr(34) & Date & GK & Navn & GK & Ip & GK & Ws & GK & Note
P = P + 1
End If

Slettes:
Next
End Sub
Avatar billede kabbak Professor
09. februar 2004 - 23:53 #5
I excel regneark

Global NyLogData() As Variant
Global LogData() As Variant
Public Sub hent()
Dim Str As String, I As Long
I = 0
  Open "C:\log.txt" For Input As #1
  Do
  ReDim Preserve LogData(I)
      Line Input #1, LogData(I)
        I = I + 1
       
  Loop Until EOF(1)
Close #1

Call Filbehandling

  Open "C:\NYlog.txt" For Output As #1
For I = 0 To UBound(NyLogData)

  Print #1, NyLogData(I)
Next
Close #1


End Sub

Public Sub Filbehandling()
Dim P As Long, I As Long, Str As Variant, Navn As String, Ip As String
Dim Ws As String, Note As String, OK As Boolean, MidStr() As Variant
gk = Chr(34) & Chr(44) & Chr(34)

On Error Resume Next
For I = 1 To UBound(LogData)
LogData(I) = LTrim(LogData(I))
Next
P = 0
For I = 0 To UBound(LogData)
  OK = False
If Left(LogData(I), 1) = "-" Then GoTo Slettes
If I > 0 Then
    If Left(LogData(I - 1), 1) = "-" And Left(LogData(I + 1), 1) = "-" Then
      Str = Split(LogData(I), "(")
      Navn = Str(0)
      Ip = Left(Str(1), Len(Str(1)) - 1)
      I = I + 1
    GoTo Videre
    End If
  If Left(LogData(I), 1) = "*" Then
    Ws = LTrim(Right(LogData(I), Len(LogData(I)) - 1))
 
  Else
 
      Str = Split(LogData(I), " ")
      X = 0
      For A = 0 To UBound(Str)
        If Str(A) <> "" Then
        ReDim Preserve MidStr(X)
        MidStr(X) = Str(A)
        X = X + 1
        End If
        Next
       
  If UBound(MidStr) = 2 Then
  Note = ""
      For A = 0 To UBound(MidStr)
      Note = Note & MidStr(A) & Chr(34) & Chr(44)
      Next
      Note = Left(Note, Len(Note) - 1)
      OK = True
    GoTo Videre
    Else
   
      Note = ""
    For A = 0 To UBound(MidStr) - 2
        Note = Note & MidStr(A) & " "
        G = A + 1
    Next
      Note = Note & gk
      For A = G To UBound(MidStr)
          Note = Note & MidStr(A) & gk
      Next
      OK = True
      Note = Left(Note, Len(Note) - 2)
      End If
  End If
End If
Videre:
If OK = True Then
ReDim Preserve NyLogData(P)
NyLogData(P) = Chr(34) & Date & gk & Navn & gk & Ip & gk & Ws & gk & Note
P = P + 1
End If

Slettes:
Next
End Sub
Avatar billede train Nybegynder
10. februar 2004 - 10:14 #6
det er bare super , mange tak for det store arbejde.
Avatar billede kabbak Professor
10. februar 2004 - 10:18 #7
virker den som den skal.
Avatar billede train Nybegynder
10. februar 2004 - 10:31 #8
den er der næsten, kun lige et par småting der skal ændres, men i det store hele er den kanon, så jeg er meget taknemmelig for hjælpen.
Avatar billede kabbak Professor
10. februar 2004 - 10:33 #9
Ok tak 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