Avatar billede angelenglen Nybegynder
23. marts 2004 - 11:33 Der er 4 kommentarer og
2 løsninger

slet sektion fra ini-fil

jeg har en ini-fil:
[www.newz.dk]
URL=Newz.dk
Name=www.newz.dk
LinkType=Internet URL
[www.eb.dk]
URL=EB.dk
Name=www.eb.dk
LinkType=Internet URL
[www.bt.dk]
URL=BT.dk
Name=www.bt.dk
LinkType=Internet URL

Jeg har så smidt dem ind på en list box (lstDelete) således at listen ser sådan ud:
www.newz.dk
www.eb.dk
www.bt.dk

Det jeg så mangler, er at når jeg klikker på min command-button (cmdDelete) så skal den slette den valgte sektion fra ini-filen (minidata.ini)

Jeg har fundet noget kode her på eksperten:
http://www.eksperten.dk/spm/444993
det gør lidt i samme stil, men det kræver et start og et slut-punkt at gå efter... og det er ikke lykkedes mig at skrive det om nok til kun at slette den ene valgte sektion.
Desuden så vidt jeg kan se mig ud af, kan det ikke slette den sidste sektion af en fil.

nogen der kan hjælpe mig med at finde en kode jeg kan bruge?
Avatar billede martin_moth Mester
23. marts 2004 - 12:03 #1
Du har jo 99% af svaret i http://www.eksperten.dk/spm/479288 (som du mangler at lukke)

Du kan bruge IF newssection=false så skriv linien til en ny fil. Den nye fil vil da indeholde det samme som den oprindelige men uden det der står i newssection
Avatar billede angelenglen Nybegynder
23. marts 2004 - 12:19 #2
yeah, lige nu ser den sådan her ud:

Private Sub cmdDelNews_Click()
DeleteNews ("www.bt.dk")
End Sub

Private Sub Delete_News(Dummy As String)
  Dim Section As Boolean
  Filnummer = FreeFile
  Open App.Path & "\minidata.ini" For Input As #Filnummer

  Section = False
  While Not EOF(Filnummer)
    Line Input #Filnummer, Dummy
    If LTrim(RTrim(Dummy)) = "[" & Section & "]" Then Section = False
    If Section = True Then lstNews.AddItem Dummy
    If LTrim(RTrim(Dummy)) = "[News]" Then Section = True
  Wend
  Close #Filnummer
End Sub


jeg er godt klar over at den lige nu forsøger at smide noget ind i en list box, men jeg forstår ikke hvordan jeg laver den om til at slette istedet for det.
jeg har ingen erfaring med at slette fra filer, indtil nu er jeg kun nået til at læse og skrive til filer...
Avatar billede martin_moth Mester
23. marts 2004 - 14:18 #3
Det er også det eneste du kan - læse og skrive.

Så du må læse linie for linie, og skrive linie for linie til en ny fil. Og så kan du nøjes med at skrive de linier, der ikke har noget med news at gøre, så vil de mangle i den nye fil (dvs. de er "slettet")

Så opret en ny fil, og skriv linierne til den inde i loopet, sådan som jeg forklarede
Avatar billede martin_moth Mester
23. marts 2004 - 14:37 #4
Jeg har læst din kode - det er noget underligt noget du skriver. Hvorfor smider du www.bt.dk over i dummy - du bruger den jo ikke.

Og hvad er det for noget mystisk noget med "[" & Section & "]" ???
Section kan kun indeholde True og False. Hmm - hvad mon det er du forsøger?

Jeg har taget min gamle kode, og skrevet den om, så den gemmer alt undtagen newssectionen i en ny fil.


Private Sub cmdDelNews_Click()
  DeleteNews ("C:\Nyfil.txt")
End Sub

Private Sub Delete_News(NytFilNavn As String)
  Dim Section As Boolean
  Dim FilNummer1 as Integer 
  Dim FilNummer2 as Integer 
  Filnummer1 = FreeFile
  Filnummer2 = Filnummer1 + 1

  Open App.Path & "\minidata.ini" For Input As #Filnummer1
  Open nytFilNavn For Output As #Filnummer2


  newssection = false
  while not eof(filnummer) 
    Line Input #Filnummer, Dummy
    if ltrim(rtrim(dummy)) = "[News_Type]" then newssection = false
    if newssection = true then list1.additem Dummy
    if ltrim(rtrim(dummy)) = "[News]" then newssection = true
    If newsSection = Fale then Print #Filnummer2, Dummy
  Wend 
  Close #Filnummer1
  Close #Filnummer2
End Sub
Avatar billede martin_moth Mester
23. marts 2004 - 14:38 #5
If newsSection = Fale
=
If newsSection = FalSe
Avatar billede martin_moth Mester
23. marts 2004 - 14:42 #6
Og
Dim Section As Boolean
Skal rettes til
Dim newsSection As Boolean

Og et par andre rettelser. Det hele blev blandet lidt sammen. Altså - copy-paste dette

Private Sub cmdDelNews_Click()
  DeleteNews ("C:\Nyfil.txt")
End Sub

Private Sub Delete_News(NytFilNavn As String)
  Dim NewsSection As Boolean
  Dim FilNummer1 as Integer 
  Dim FilNummer2 as Integer 
  Dim Dummy as string

  Filnummer1 = FreeFile
  Filnummer2 = Filnummer1 + 1

  Open App.Path & "\minidata.ini" For Input As #Filnummer1
  Open nytFilNavn For Output As #Filnummer2

  newssection = false
  while not eof(filnummer1) 
    Line Input #Filnummer1, Dummy
    if ltrim(rtrim(dummy)) = "[News_Type]" then newssection = false
    if newssection = true then list1.additem Dummy
    if ltrim(rtrim(dummy)) = "[News]" then newssection = true
    If newsSection = False then Print #Filnummer2, Dummy
  Wend 
  Close #Filnummer1
  Close #Filnummer2
End Sub
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