Newsgroup: it.comp.lang.visual-basic
Titolo: Gestione file .ini

Ciao ragazzi,
potreste farmi un esempio pratico su come gestire, da codice, la
lettura e scrittura di un file .ini senza ricorrere a ocx come
l'ottimo Xini di Gian Luca Dei???
Grazie
Carlo.

Esiste la funzione GetIniProfileString (Se non ricordo male), ho un
esempio da qualche parte te lo posto appena lo trovo alla tua mail
Ciao
Michele


ecco un esempio di uso per gestire settaggi vari di un programma
'---------------------------------------------------------
' declare (in un .bas)
'---------------------------------------------------------
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias
"GetPrivateProfileStringA" _
     (ByVal lpApplicationName As String, _
     ByVal lpKeyName As Any, _
     ByVal lpDefault As String, _
     ByVal lpReturnedString As String, _
     ByVal nSize As Long, _
     ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias
"WritePrivateProfileStringA" _
     (ByVal lpApplicationName As String, _
     ByVal lpKeyName As Any, _
     ByVal lpString As Any, _
     ByVal lpFileName As String) As Long
Public gsINIFile As String 'gs significa global string
'---------------------------------------------------------
' funzioni o sub di VB per rendere umana la gestione
' metterle nello stesso .bas delle precedenti
' si puo' semplificare se si vuole
'---------------------------------------------------------
Public Sub INISetValue(INIFile As String, _
     INIGroup As String, _
     INIKey As String, _
     INIVAlue As String)
     ' update single line of .INI file
     ' NOTE: group and/or parameter line will be added if not already
present
     ' input: inifile=full path to .INI file, inigroup=group header (no
[])
     ' inikey=parameter name, inivalue=new parameter value
     Call WritePrivateProfileString(INIGroup, INIKey, INIVAlue, INIFile)
End Sub
Public Function INIGetValue(INIPath As String, _
     INIGroup As String, _
     INIKey As String, _
     INIDefault As String) As String
     ' get line from .INI file
     ' input: inpath=path to .INI file, INIgroup=group header (no [])
     ' inikey=parameter name, inidefault=default value
     ' output: value from file or default if not found
     Dim x As Long
     Dim sBuff As String * 512
     x = GetPrivateProfileString(INIGroup, INIKey, INIDefault, sBuff,
Len(sBuff), _
         INIPath)
     INIGetValue = Left$(sBuff, x)
     End Function
Public Sub INIDeleteValue(INIPath As String, _
     INIGroup As String, _
     INIKey As String)
     ' delete line from .INI file (physically)
     ' input: inipath=path to .INI file, iniGroup=group header (no []),
     ' INIkey=parameter name
     Call WritePrivateProfileString(INIGroup, INIKey, 0&, INIPath)
End Sub
'---------------------------------------------------------
' queste vanno messe nello stesso bas
' sono le funzioni da usare nei vari form o moduli
' si puo' semplificare se si vuole, evitando le INIGetValue...
' e quindi scrivendo INIGetSettings e INISaveSettings
' usando direttamente GetPrivateProfileString e
WritePrivateProfileString
' ma sono comode perche' semplificano la vita ed evitano di dover
specificare il file (gsINIFile)
'---------------------------------------------------------
Public Function INIGetSettings(INISection As String, _
  INIVar As String, _
  INIDefault As String) As String
  INIGetSettings = INIGetValue(gsINIFile, _
                  INISection, _
                  INIVar, INIDefault)
End Function
Public Sub INISaveSettings(INISection As String, _
     INIVar As String, _
     INIVAlue As String)
   INIDeleteValue gsINIFile, INISection, INIVAlue
   INISetValue gsINIFile, INISection, INIVar, INIVAlue
End Sub
' uso con il filename della variabile globale INIFile
' uso: ad esempio per salvare il valore <mio> nella variabile <ciao>
del gruppo <MostRecent> si usa:
  INISaveSettings "MostRecent", "ciao", "mio"
' uso: ad esempio per recuperare il valore della variabile <ciao>  del
gruppo <MostRecent> si usa:
        gsValore = INIGetSettings("MostRecent", "ciao", "-")
' "-" e' il valore di default


l'ottimo Xini di Gian Luca Dei???
Ciao,
tempo fa ho trovato del codice MOLTO utile sul sito comune. E' stato
testato parecchio da me in quanto gli ultimi miei programmi li usano.
teddy...@hotmail.com
ICQ 7044062
Como - Italy