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
Der bliver investeret massivt i AI. Teknologien er mere tilgængelig end nogensinde, og ambitionerne er høje. Alligevel oplever mange virksomheder, at resultaterne udebliver.
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.