12/06/08 10:54
acromangelo@libero.it
Salve a tutti! Gente della community!
Mi sono ritrovato a sviluppare un codice tutto mio per la gestione dei file così detti "INI" visto che moduli famosi su internet ce ne sono esempio: INI.bas , nFile.bas , etc.
Ne ho sviluppato uno tutto mio partendo da 0 e senza utilizzare le funzioni GetPrivateProfile, WritePrivatP......perchè sto facendo un programma per un mio amico per una sagra dell'oratorio e mi serviva questa funzione.
Vi chiederete...ma ci sono già fatti e funzionano bene, perchè ne hai fatto uno da capo?
Provandolo su un altro computer quelle famose funzioni del kernel non andavano stranamente e quindi mi fido solo della mia testa
Non so se a qualcuno possa servire ma io ve lo posto lo stesso...Felice di contribuire con tutti voi!
Copiate tutto in un modulo e chiamatelo come volete dopo di che avrete 4 funzioni disponibili:
LeggiTutto(file As String, prima_delle_chiavi As String)
EliminaChiave(file As String, chiave As String)
ScriviValore(file As String, chiave As String, valore As String)
LeggiValore(file As String, chiave As String)
Come già detto prima questo è simile alla gestione dei file INI, l'unica differenza è la mancanza della sezione ma per il resto funziona tutto.
Salve e alla prossima!
Allego un programma per testarlo.
Mi sono ritrovato a sviluppare un codice tutto mio per la gestione dei file così detti "INI" visto che moduli famosi su internet ce ne sono esempio: INI.bas , nFile.bas , etc.
Ne ho sviluppato uno tutto mio partendo da 0 e senza utilizzare le funzioni GetPrivateProfile, WritePrivatP......perchè sto facendo un programma per un mio amico per una sagra dell'oratorio e mi serviva questa funzione.
Vi chiederete...ma ci sono già fatti e funzionano bene, perchè ne hai fatto uno da capo?
Provandolo su un altro computer quelle famose funzioni del kernel non andavano stranamente e quindi mi fido solo della mia testa
Non so se a qualcuno possa servire ma io ve lo posto lo stesso...Felice di contribuire con tutti voi!
Public Function LeggiValore(file As String, chiave As String) As String Dim FF As Integer, SettagiLetti As String, Settaggi() As String Dim key() As String, n As Long If Not Esiste = Dir(file) Then FF = FreeFile Open file For Input As #FF settaggiletti = Input(LOF(FF), FF) Close #FF Settaggi = Split(settaggiletti, vbCrLf) For n = 0 To UBound(Settaggi) - 1 If Settaggi(n) <> "" Then key() = Split(Settaggi(n), "=") If key(0) = chiave Then LeggiValore = key(1) End If End If Next End If End Function Public Function ScriviValore(file As String, chiave As String, valore As String) Dim FF As Integer, SettagiLetti As String, Settaggi() As String Dim key() As String, agg As Boolean, n As Long If Not Esiste = Dir(file) Or Len(file) < 0 Then FF = FreeFile Open file For Input As FF settaggiletti = Input(LOF(FF), FF) Close #FF Settaggi = Split(settaggiletti, vbCrLf) agg = True For n = 0 To UBound(Settaggi) - 1 key = Split(Settaggi(n), "=") If key(0) = chiave Then If n = UBound(Settaggi) - 1 Then settaggiletti = Replace(settaggiletti, Settaggi(n) & vbCrLf, chiave & "=" & valore) agg = False Else settaggiletti = Replace(settaggiletti, Settaggi(n), chiave & "=" & valore) settaggiletti = Replace(settaggiletti, Settaggi(UBound(Settaggi) - 1) & vbCrLf, Settaggi(UBound(Settaggi) - 1)) agg = False End If FF = FreeFile Open file For Output As FF Print #1, settaggiletti Close #FF End If Next If agg = True Then settaggiletti = settaggiletti & chiave & "=" & valore FF = FreeFile Open file For Output As FF Print #1, settaggiletti Close #FF End If Else settaggiletti = chiave & "=" & valore FF = FreeFile Open file For Output As FF Print #1, settaggiletti Close #FF End If End Function Public Function EliminaChiave(file As String, chiave As String) Dim FF As Integer, settaggiletti As String, Settaggi() As String Dim key() As String, n As Long If Not Esiste = Dir(file) Then FF = FreeFile Open file For Input As FF settaggiletti = Input(LOF(FF), FF) Close #FF Settaggi = Split(settaggiletti, vbCrLf) For n = 0 To UBound(Settaggi) - 1 key = Split(Settaggi(n), "=") If key(0) = chiave Then If n <> UBound(Settaggi) - 1 Then settaggiletti = Replace(settaggiletti, Settaggi(n) & vbCrLf, "") settaggiletti = Left(settaggiletti, Len(settaggiletti) - 2) FF = FreeFile Open file For Output As FF Print #1, settaggiletti Close #FF Else settaggiletti = Replace(settaggiletti, Settaggi(n) & vbCrLf, "") If settaggiletti = "" Then Kill (file) Else settaggiletti = Left(settaggiletti, Len(settaggiletti) - 2) FF = FreeFile Open file For Output As FF Print #1, settaggiletti Close #FF End If End If End If Next End If End Function Public Function LeggiTutto(file As String, prima_delle_chiavi As String) As String Dim FF As Integer, settaggiletti As String, Settaggi() As String If Not Esiste = Dir(file) Then FF = FreeFile Open file For Input As FF settaggiletti = Input(LOF(FF), FF) Close #FF Settaggi = Split(settaggiletti, vbCrLf) For n = 0 To UBound(Settaggi) - 1 LeggiTutto = LeggiTutto & prima_delle_chiavi & Settaggi(n) & vbCrLf Next End If End Function
Copiate tutto in un modulo e chiamatelo come volete dopo di che avrete 4 funzioni disponibili:
LeggiTutto(file As String, prima_delle_chiavi As String)
EliminaChiave(file As String, chiave As String)
ScriviValore(file As String, chiave As String, valore As String)
LeggiValore(file As String, chiave As String)
Come già detto prima questo è simile alla gestione dei file INI, l'unica differenza è la mancanza della sezione ma per il resto funziona tutto.
Salve e alla prossima!
Allego un programma per testarlo.
aaa