Newsgroup: it.comp.lang.visual-basic
Titolo: Lettura File INI

Un saluto a tutto il NG
Dovendo attribuire dei valorei di default ad alcune variabili globali
presenti in un file ini utilizzo l'API  GetPrivateProfileString
implementando una funzione nel seguente modo
Public Function LeggiValore() As String
Const LEN_BUFFER As Long = 2 ^ 10
Dim ValVoce As String
Dim Lung As Integer
    ValVoce = Space(LEN_BUFFER)
    Lung = GetPrivateProfileString(NomeSezione, NomeVoce, "", _
            ValVoce, Len(ValVoce), Percorso)
    LeggiValore = Left(ValVoce, Lung)
End Function
Leggendo però il valore in questo modo
non mi restituisce nulla
DataBasePath=LeggiValore("DataBase","Path",app.path & 
"\configurazioni\Default.ini")
Qualcuno sarebbe in grado di aiutarmi ?
grazie

 "\configurazioni\Default.ini")
Mi sa che quel "Path" e la sua virgola son di troppo
-- 
Greg 

greg ha scritto:

Scusa ho errato :(
Senza andare a vedere quale è la quisquilia sbagliata  nella tua func, ti 
posto quella che uso io
 Function ReadIni(Chiave As String)
   Dim FileName As String, lpAppName As String, lpKeyName As String
   Dim lpDefault As String, Temp As String * 160, x As Long
   FileName = App.Path & "\Config.ini"
   lpAppName = "Start"
   lpKeyName = Chiave
   'lpDefault = ""
   x = GetPrivateProfileString(lpAppName, lpKeyName, lpDefault, Temp, 
Len(Temp), FileName)
 If x = 0 Then
    ReadIni = ""
    Else
    a = CStr(Temp)
    b = Len(a)
   For i = 1 To b
     c = Mid(a, i, 1)
     If Asc(c) <> 0 Then D = D & Chr(Asc(c))
   Next
    ReadIni = D
 End If
End Function
-- 
Greg 

    LeggiValore = Left(ValVoce, Lung)
Left$ è meglio, in questo caso, vedi l'help per info.
Le dichiarazioni sono corrette ? Per sicurezza ti passo quelle
che uso io, e le Function, già che ci sono.
(I nomi SalvaSettings e GettSettings sono scelti apposta, così se
uso le funzioni interne SaveSettings e GetSettings che scrivono
sul registro e voglio usare un INI ci metto poco a cambiare).
' *****************************
Public 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
Public 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 Function GettSettings(Sezione As String, Chiave As _
                String, Default As String) As String
      Dim RetVal As Long
      Dim strReturn As String * 1024
      RetVal = GetPrivateProfileString(Sezione, Chiave, Default, _
            strReturn, 1024, App.path & "\" & App.Title & ".ini")
      GettSettings = Left$(strReturn, RetVal)
End Function
Public Sub SalvaSettings(Sezione As String, Chiave As String, _
            Valore As String, Dato As String)
      Dim RetVal As Long
      RetVal = WritePrivateProfileString(Chiave, Valore, _
            Dato, App.path & "\" & Sezione & ".ini")
      If RetVal = 0 Then ' qui se ne può discutere, ma a me serve così.
            MsgBox "Errore nella Sub SalvaSettings"
      End If
End Sub
' *****************************
Bye, G. 

 End Sub
Domani modifico/migliora la mia sulla base della tua che mi sembra piu umana 
:)
Una curiosità: nel salvasetting, la stringa Valore (o Dato?) non dovrebbe 
essere dimensionata?
-- 
Greg 


[cut]
Grazie a tutti