Oppure

Loading
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 :asd:

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! :k:

Allego un programma per testarlo.
aaa
12/06/08 11:35
GrG
Ti conviene metterlo tra i sorgenti Visual Basic:
pierotofy.it/pages/sorgenti/Visual_Basic/

perchè qui poca gente lo vedrebbe...
Cmq per metterlo tra i sorgenti ti devi registrare qui:
pierotofy.it/pages/members/join_module/
aaa