Avatar billede biohazard_666 Nybegynder
11. juni 2004 - 13:20 Der 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 :)

/Bio
Avatar billede martin_moth Mester
11. juni 2004 - 13:49 #1
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)
Avatar billede biohazard_666 Nybegynder
11. juni 2004 - 14:19 #2
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 :)

/Bio
Avatar billede n30thaone Nybegynder
11. juni 2004 - 14:23 #3
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...
Avatar billede martin_moth Mester
11. juni 2004 - 14:26 #4
Nedenstående løsning er ikek case sensetive.

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
Avatar billede martin_moth Mester
11. juni 2004 - 14:28 #5
Slet linien

  MsgBox lngSucces

Den var bare til mit eget tjek - skal ikek bruges
Avatar billede biohazard_666 Nybegynder
11. juni 2004 - 14:31 #6
Så skal det ikk være case sensitive :)

Jeg checker lige koden :)
Vender snart tilbage :)
Avatar billede biohazard_666 Nybegynder
11. juni 2004 - 14:36 #7
Hej..
Koden virker ikke.. Eller... Den fjerner ikke linien hvor ordet står i..
Avatar billede biohazard_666 Nybegynder
11. juni 2004 - 17:36 #8
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 :)

/Bio
Avatar billede biohazard_666 Nybegynder
11. juni 2004 - 17:37 #9
<*-*-*-*-* SPØRGSMÅL LUKKET *-*-*-*-*>
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