28. april 2003 - 12:43Der er
6 kommentarer og 1 løsning
Find text?
Nu har jeg en ide om et lille program, som skal søge i en given fil eks. fil1.txt efter følgende: <!-- Find mig --> og herefter skal den gemme den tekst som jeg har indtastet i en textbox efter den linie og nedefter. Den må dog ikke slette al det text der er efter: <!-- Stop med at finde mig -->
og et lille tillægsspørgsmål.: Vil også gerne have hvis det var muligt at få al det text der står mellem disse tags til at blive gengivet i min textbox.
Følgende kode læser sig frem til tags, og indsætter kun det der ligger imellem de to tags.
---------------------------------------- Private Sub ReadFile()
Dim FSO As Object, fsoText As Object, currentLine As String
Set FSO = CreateObject("scripting.filesystemobject") Set fsoText = FSO.opentextfile("fil1.txt") 'Fuld sti kræves
Do While Not fsoText.atendofstream currentLine = fsoText.readline If currentLine = "<!-- Find mig -->" Then Do While Not currentLine = "<!-- Stop med at finde mig -->" currentLine = fsoText.readline If currentLine <> "<!-- Stop med at finde mig -->" Then text1.Text = text1.Text & vbCrLf & currentLine End If Loop End If Loop
fsoText.Close Set fsoText = Nothing Set FSO = Nothing
Så bliver det noget i denne stil (du bliver nu nødt til at benytte dig af en midlertidig kopi):
----------------------------------------------- Private Sub SaveToFile()
Dim FSO As Object, fsoText As Object, fsoTextCopy As Object, currentLine As String Dim LineArray As Variant, i As Integer
Set FSO = CreateObject("scripting.filesystemobject") Set fsoText = FSO.opentextfile("fil1.txt") 'Fuld sti kræves Set fsoTextCopy = FSO.createtextfile("filcopy.txt")
Do While Not fsoText.atendofstream currentLine = fsoText.readline If currentLine = "<!-- Find mig -->" Then fsoTextCopy.writeline currentLine LineArray = Split(text1.Text, vbCrLf) For i = 0 To UBound(LineArray) fsoTextCopy.writeline LineArray(i) Next i fsoTextCopy.writeline "<!-- Stop med at finde mig -->" Do Until currentLine = "<!-- Stop med at finde mig -->" currentLine = fsoText.readline Loop Else fsoTextCopy.writeline currentLine End If Loop
fsoText.Close fsoTextCopy.Close Set fsoText = Nothing Set fsoTextCopy = Nothing
FSO.deletefile "fil1.txt" FSO.movefile "filcopy.txt", "fil1.txt" Set FSO = Nothing
Det var så lidt. Det virkede altså? Jeg havde ikke mulighed for at debugge...
Synes godt om
Ny brugerNybegynder
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.