Allora c'è qualcuno....
Premetto la mia provenienza (ed inesorabile reminiscenza) è VB6, pertanto...
Ecco la soluzione:
Innanzitutto creo una Classe: clsFilesINI
Public Class clsFilesIni
' API
Private Declare Ansi Function GetPrivateProfileString _
Lib "kernel32.dll" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As String, ByVal lpDefault As String, _
ByVal lpReturnedString As System.Text.StringBuilder, _
ByVal nSize As Integer, ByVal lpFileName As String) _
As Integer
Private Declare Ansi Function WritePrivateProfileString _
Lib "kernel32.dll" Alias "WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As String, ByVal lpString As String, _
ByVal lpFileName As String) As Integer
Private Declare Ansi Function GetPrivateProfileInt _
Lib "kernel32.dll" Alias "GetPrivateProfileIntA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As String, ByVal nDefault As Integer, _
ByVal lpFileName As String) As Integer
Private Declare Ansi Function FlushPrivateProfileString _
Lib "kernel32.dll" Alias "WritePrivateProfileStringA" _
(ByVal lpApplicationName As Integer, _
ByVal lpKeyName As Integer, ByVal lpString As Integer, _
ByVal lpFileName As String) As Integer
Dim strFilename As String
Public Sub New(ByVal Filename As String)
strFilename = Filename
End Sub
' Read-only property
ReadOnly Property FileName() As String
Get
Return strFilename
End Get
End Property
Public Function GetString(ByVal Section As String, ByVal Key As String, ByVal [Default] As String) As String
' Returns a string from your INI file
Dim intCharCount As Integer
Dim objResult As New System.Text.StringBuilder(256)
intCharCount = GetPrivateProfileString(Section, Key, _
[Default], objResult, objResult.Capacity, strFilename)
If intCharCount > 0 Then
GetString = Left(objResult.ToString, intCharCount)
Else
Return Nothing
End If
End Function
Public Function GetInteger(ByVal Section As String, ByVal Key As String, ByVal [Default] As Integer) As Integer
' Returns an integer from your INI file
Return GetPrivateProfileInt(Section, Key, _
[Default], strFilename)
End Function
Public Function GetBoolean(ByVal Section As String, ByVal Key As String, ByVal [Default] As Boolean) As Boolean
' Returns a boolean from your INI file
Return (GetPrivateProfileInt(Section, Key, _
CInt([Default]), strFilename) = 1)
End Function
Public Sub WriteString(ByVal Section As String, ByVal Key As String, ByVal Value As String)
' Writes a string to your INI file
WritePrivateProfileString(Section, Key, Value, strFilename)
Flush()
End Sub
Public Sub WriteInteger(ByVal Section As String, ByVal Key As String, ByVal Value As Integer)
' Writes an integer to your INI file
WriteString(Section, Key, CStr(Value))
Flush()
End Sub
Public Sub WriteBoolean(ByVal Section As String, ByVal Key As String, ByVal Value As Boolean)
' Writes a boolean to your INI file
WriteString(Section, Key, CStr(CInt(Value)))
Flush()
End Sub
Private Sub Flush()
' Stores all the cached changes to your INI file
FlushPrivateProfileString(0, 0, 0, strFilename)
End Sub
End Class
poi in un modulo, chiamo ad esempio la lettura di stringhe:
Public Function IniRead(ByVal FileName As String, ByVal Section As String, ByVal Key As String) As String
Dim objIniFile As New clsFilesIni(FileName)
IniRead = objIniFile.GetString(Section, Key, "<Not_Found>")
End Function
Public Sub IniWrite(ByVal FileName As String, ByVal Section As String, ByVal Key As String, ByVal Value As String)
Dim objIniFile As New clsFilesIni(FileName)
objIniFile.WriteString(Section, Key, Value)
End Sub
Quindi per usarla scrivo:
mioValore=IniRead(PercorsoMioFileIni, MiaSezione, MiaChiave)
ovvero:
[NOMESEZIONE]
Chiave1=pippo
Ecco come richiamare :
MioValore=IniRead(PercorsoMioFileIni, ?NOMESEZIONE?, ?Chiave1?)
Questo è quanto (come esempio 1)
Mi piacerebbe ricevere commenti al riguardo.
Grazie