29. december 2003 - 18:43Der 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?
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".
---- 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
Undskyld for den lange vente tid... havde helt glemt den :( men det skulle der være rodet bod på nu :)
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.