Avatar billede ulrina Nybegynder
29. december 2003 - 18:43 Der er 7 kommentarer og
1 løsning

Slette i en ini fil

Jeg har en ini fil opbygget ved hjælp af WritePrivateProfileString og det virker fint, jeg kan også hente data med GetPrivateProfileString, nu går mit spørgsmål på hvordan kan man slette en afsnit i filen altså alt fra [TEST] til den næste [NÆSTE] ?? og er det mulig?
Avatar billede thesurfer Nybegynder
29. december 2003 - 18:59 #1
En mulighed er at loade filen 1 linie af gangen, og smide linien i en variabel, f.eks. "tmp".
Derefter kan du checke om de første (6) tegn er det du vil ha' ("[TEST]").
Hvis kravet opfyldes, gemmes der ikke længere i tmp. Så skal du checke om de første (7) er det du vil ha' ("[NÆSTE]").
Hvis kravet opfyldes, begynder du at gemme i tmp igen.

Når du er færdig med det, overskriver du din ini fil, med indholdet af variablen "tmp".
Avatar billede thesurfer Nybegynder
29. december 2003 - 19:08 #2
Skal selve "[TEST]" slettes? Eller kun værdierne der står mellem [TEST] og [NÆSTE] ?
Avatar billede ulrina Nybegynder
29. december 2003 - 22:23 #3
Alt skal slettes.. fra og med [TEST] til [NÆSTE] men [NÆSTE] skal ikke med..
Avatar billede thesurfer Nybegynder
29. december 2003 - 23:12 #4
OK.. Prøv det her:

** indholdet af filen "data.ini":

---- denne linie skal ikke med ----
[FELT]
key=value

[TEST]
noget=ja

[NÆSTE]
tjaa=jo

[ANDET]
yeps=du
---- denne linie skal ikke med ----

** indholdet af din form, hvor du indsætter en CommandButton der hedder "Command1":

Private Sub DoIt(first As String, last As String)
On Error GoTo ShowError

Dim found_first As Boolean
Dim tmp As String
Dim msg_text, msg_title As String

found_first = False
tmp = ""
msg_text = "Der blev ikke fundet nogen værdier mellem '" & first & "' og '" & last & "'"
msg_title = "Værdierne blev ikke fundet"

Open App.Path & "\data.ini" For Input As #1
Do While Not EOF(1)
    Line Input #1, textline
    If textline = "[" & first & "]" Then
        msg_text = "Værdierne mellem '" & first & "' og '" & last & "' er fjernet," _
        & vbCrLf & "og filen er gemt."
        msg_title = "Værdierne er slettet"
        found_first = True
    End If
   
    If textline = "[" & last & "]" Then found_first = False
   
    If found_first = False Then
        If tmp = "" Then
            tmp = tmp & textline
        Else
            tmp = tmp & vbCrLf & textline
        End If
    End If
     
Loop
Close #1

Open App.Path & "\data.ini" For Output As #1
Print #1, tmp
Close #1

MsgBox msg_text, vbInformation, msg_title

Exit Sub

ShowError:
MsgBox Err.Number & " - " & Err.Description
End Sub

''''''''''''' kald på funktionen:

Private Sub Command1_Click()
' du kalder funktionen med: DoIt "først område", "sidste område"
DoIt "TEST", "NÆSTE"
End Sub
Avatar billede ulrina Nybegynder
30. december 2003 - 09:59 #5
Takker det virker :) points til dig :)
Avatar billede ulrina Nybegynder
30. december 2003 - 09:59 #6
Hmm nej så skal du lige svare :)
Avatar billede thesurfer Nybegynder
30. december 2003 - 10:31 #7
Et svar er smidt :)
Avatar billede ulrina Nybegynder
22. januar 2004 - 11:56 #8
Undskyld for den lange vente tid... havde helt glemt den :( men det skulle der være rodet bod på nu :)
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