09. juni 2004 - 17:58Der er
7 kommentarer og 1 løsning
Søge i textfiler med VB
Hej eksperter jeg har et lille problem, jeg vil gerne søge efter en string i en text fil og returnere linjenummer etc. Men jeg har lidt problemer med at krejle hvordan man skal søge efter en string i en string.
min kode er: Function findSted(logfil,soegeord) Dim tmpFSO, linjenr, checkLine set tmpFSO = Wscript.CreateObject("Scripting.FileSystemObject") If tmpFSO.FileExists(logfil) Then linjenr = 0 set tmpfil = tmpFSO.OpenTextFile(logfil) do until LogFil.AtEndOfStream checkLine = LogFil.ReadLine() '//checkLine skal checkes for om den indeholder soegeord loop tmpfil.close() Else findSted = "Der er ingen logs i mappen" End If set tmpFSO = nothing End Function
Jeg er ikke så avanceret som dit kodeeksempel viser, og bruger en VB5 enterprise. I et af mine programmer søger jeg efter tekst, der er indtastet i en tekstfil:
Private Sub knsogen_Click() If Len(Dir(labjourfil.Caption)) < 2 Then Exit Sub 'tjekker om filen findes txtjour.Text = "" If fler = 1 Then GoTo igen Open labjourfil.Caption For Input As #5 igen: Do While EOF(5) = False Line Input #5, satning If InStr(satning, txtsogen.Text) > 0 Then txtjour.Text = satning knsogen.Caption = "&Næste" fler = 1 Exit Sub Else If EOF(5) = False Then GoTo igen Close #5 MsgBox ("Der er ikke flere forekomster af " & txtsogen.Text & " Bemærk af søgningen skelner mellem store og små bogstaver!") Exit Sub End If Loop Close #5
hvis nogle var interesseret i løsningen er den her: '// Søger i log filerne efter søgeord atFinde = inputbox("Indtast det ord du vil søge efter")
'//Path = logbiblioteket '// version 1.0 leder ikke i undermaper Dim path path = "S:\Logs\GamleLogs\"
Function loopLogs(path,soegeord) Dim folder,files, resultat set FSO = WScript.Createobject("Scripting.FileSystemObject") set folder = FSO.GetFolder(path) set files = folder.Files 'msgbox "Antal filer: " & files.count For Each file in files filnavn = file.Name 'msgbox file.Name 'msgbox path & filnavn tmpString = findSted(path&filnavn,soegeord) If tmpString <> "" and tmpString <> "¤2" and tmpString <> "Der er ingen logs i mappen" Then If resultat = "" Then resultat = "Du søgte efter: "& soegeord&vbCrlf msgbox tmpString End If resultat = resultat & "Fundet i: " & filnavn & vbCrlf '//Skriver resultatet ind End If Next If resultat = "" Then resultat = "sogeordet blev ikke fundet" End If '//oprydning loopLogs = resultat set folder = nothing set files = nothing set FSO = nothing End Function
Function findSted(logfil,soegeord) Dim tmpFSO, linjenr, checkLine, fundet Dim linjeNumre fundet = false set tmpFSO = Wscript.CreateObject("Scripting.FileSystemObject") If tmpFSO.FileExists(logfil) Then linjenr = 1 set tmpfil = tmpFSO.OpenTextFile(logfil) do until tmpfil.AtEndOfStream checkLine = tmpfil.ReadLine() '//checkLine skal checkes for om den indeholder soegeord If InStr(checkLine,soegeord)>0 Then linjeNumre = linjeNumre & linjenr&"," fundet = true End If linjenr = linjenr +1 loop tmpfil.close() If fundet Then findSted = linjeNumre Else findSted = "¤2" End If Else findSted = "Der er ingen logs i mappen" End If set tmpFSO = nothing End Function
'// Søger i log filerne efter søgeord atFinde = inputbox("Indtast det ord du vil søge efter")
'//Path = logbiblioteket '// version 1.0 leder ikke i undermaper Dim path path = "S:\Logs\GamleLogs\"
msgbox loopLogs(path,atFinde)
Function loopLogs(path,soegeord) Dim folder,files, resultat set FSO = WScript.Createobject("Scripting.FileSystemObject") set folder = FSO.GetFolder(path) set files = folder.Files 'msgbox "Antal filer: " & files.count For Each file in files filnavn = file.Name 'msgbox file.Name 'msgbox path & filnavn tmpString = findSted(path&filnavn,soegeord) If tmpString <> "" and tmpString <> "¤2" and tmpString <> "Der er ingen logs i mappen" Then If resultat = "" Then resultat = "Du søgte efter: "& soegeord&vbCrlf msgbox tmpString End If resultat = resultat & "Fundet i: " & filnavn & vbCrlf '//Skriver resultatet ind End If Next If resultat = "" Then resultat = "sogeordet blev ikke fundet" End If '//oprydning loopLogs = resultat set folder = nothing set files = nothing set FSO = nothing End Function
Function findSted(logfil,soegeord) Dim tmpFSO, linjenr, checkLine, fundet Dim linjeNumre fundet = false set tmpFSO = Wscript.CreateObject("Scripting.FileSystemObject") If tmpFSO.FileExists(logfil) Then linjenr = 1 set tmpfil = tmpFSO.OpenTextFile(logfil) do until tmpfil.AtEndOfStream checkLine = tmpfil.ReadLine() '//checkLine skal checkes for om den indeholder soegeord If InStr(checkLine,soegeord)>0 Then linjeNumre = linjeNumre & linjenr&"," fundet = true End If linjenr = linjenr +1 loop tmpfil.close() If fundet Then findSted = linjeNumre Else findSted = "¤2" End If Else findSted = "Der er ingen logs i mappen" End If set tmpFSO = nothing End Function
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.