11. juni 2004 - 13:20Der er
8 kommentarer og 1 løsning
Åben txt fil, find specifik linie og slet
Hejsa.. Skal til at lave et program som åbner en txt fil, efter det skal den finde en linie hvor der står et specifikt ord.. Så skal den slette HELE linien hvor det ord står i... MEN den skal gøre det "upside down".. Altså den skal læse nedefra i txt filen.. Håber i forstår :)
Altså slette den første linie fra neden, der indeholder et bestemt ord?
Det er nemt klaret, sig lige hvilket ord der skal søges efter, og om det står et bestemt sted (fx. først eller sidst i linien) eller om det bare skal stå et tilfældigt sted i linien. Skal det være Case Sensitive?
Svar på ovenstående, og du skal få koden 10 minutter senere :o)
Ordet der skal søges efter skal helst stå i en txtbox (man skal selv kunne skrive det)... Ordet skal bare stå et tilfældigt sted i linien :) Case Sensitive? Forklar lige :)
Lav et array og load hver linie ind i, derefter looper du igennem og ser om dit ord er fundet(brug LCase() eller UCase() hvis det ikke skal være case sens), Hvis den er fundet, så fjern den linie, og enten flytter du alle værdier i arrayet, eller også looper du igennem det og printer kun det som ikke er en blank linie...
Dvs. hvis du søger efter "Hej" vil linier med "hej", "hEJ", "HEJ" osv. blive slettet. Kun den nederste bliver slettet.
Smid det selv i en eller flere procedurer, hvis du vil
'Dimmer variabler, og sætter værdier Dim Filnummer As Byte Dim ArrLinie() As String Dim i As Long Dim lngSucces As Long Dim strSøgeord As String Filnummer = FreeFile strSøgeord = text1.text '<---RET EVT NAVN PÅ TEXTBOX
'Indlæs fil i array Open "c:\test.txt" For Input As #Filnummer Do While Not EOF(Filnummer) ReDim Preserve ArrLinie(i) Line Input #Filnummer, ArrLinie(i) i = i + 1 Loop Close #Filnummer
'Finder nederste linie med søgeord For i = UBound(ArrLinie) To LBound(ArrLinie) Step -1 If InStr(1, LCase(ArrLinie(i)), LCase(strSøgeord)) > 0 Then lngSucces = i MsgBox lngSucces Exit For End If
Next i
'Skriv linier til fil, pånær udvalgt linie Open "c:\test.txt" For Output As #Filnummer For i = LBound(ArrLinie) To UBound(ArrLinie) If i <> lngSucces Then Print #Filnummer, ArrLinie(i) Next i Close #Filnummer
'Statusrapport If lngSucces > 0 Then MsgBox "Linie efter linie nr " & lngSucces + 1 & " blev fjernet fra filen, filen har nu " & i & " linier" Else MsgBox "Filen er ikke ændret. Linieantal er stadig " & 1 + i & " linier" End If
ahh :) sorry.. har fundet problemet :) 'Indlæs fil i array Open "D:\test.txt" For Input As #Filnummer Do While Not EOF(Filnummer) ReDim Preserve ArrLinie(i) Line Input #Filnummer, ArrLinie(i) i = i + 1 Loop Close #Filnummer
'Skriv linier til fil, pånær udvalgt linie Open "C:\test.txt" For Output As #Filnummer For i = LBound(ArrLinie) To UBound(ArrLinie) If i <> lngSucces Then Print #Filnummer, ArrLinie(i) Next i Close #Filnummer
Se på sti'erne :D
Takker for hjælpen :) Du fortjener sQ point'ene Martin :)
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.