Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di daspide
    Registrato dal
    Nov 2001
    Messaggi
    132

    [VB6] problema di lettura file ini

    ciao a tutti,
    sono alle prime esperienze VB6 e mi sto cimentando con la lettura del file ini .

    ho scaricato un esempio da internet tutto abbastanza chiaro, ma non riesco a gestire un errore in lettura cioe quando richiamo il valore di una chiave in funzione della Sezione mi restituisce il percorso del file???? mentre sul file la chiave ha il valore corretto.

    codice:
    'accesso alla libreria
    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
    
    'funzione di lettura
    Private Sub cmdApri_Click()
        Dim ValoreDiRitorno As Long
        Dim NomeFile
        NomeFile = "c:\test.ini"
        Dim StringaDiRitorno As String * 50
        ValoreDiRitorno = GetPrivateProfileString(txtSezione, txtChiave, NomeFile, StringaDiRitorno, Len(StringaDiRitorno), NomeFile)
        If ValoreDiRitorno = 0 Then
            MsgBox "Si è verificato un errore!", vbExclamation
        Else
            txtValore.Text = Trim(StringaDiRitorno)
        End If
    End Sub
    potete aiutarmi?
    Grazie ciao
    ...cosa puoi fare con un rasoio,un limone ed un gatto?!?......
    d%asp%ide

  2. #2
    Il terzo parametro non è il nome del file, ma il valore da assegnare a lpReturnedString (nel tuo caso StringaDiRitorno) se la chiave non viene trovata.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di daspide
    Registrato dal
    Nov 2001
    Messaggi
    132

    [VB6] problema di lettura file ini

    Ciao ti ringrazio per l'interesse,
    ho fatto una prova ed è chiaro tutto l'esempio non è corretto di fatto sono intervenuto anch'io per altri errori. Adesso la msgbox dichiara l'errore quindi il tuo suggerimento e giusto, ti posto l'intero codice puoi dargli un'occhio.


    codice:
    'codice modulo
    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
    
    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
    
    
    
    
    ------------------------------------------------------
    'codice del form
    Public Function sGetINI(sINIFile As String, sSection As String, sKey As String, sDefault As String) As String
        Dim sTemp As String * 256
        Dim nLenght As Integer
        sTemp = Space$(256)
        nLenght = GetPrivateProfileString(sSection, sKey, sDefault, sTemp, 255, sINIFile)
        sGetINI = Left$(sTemp, nLenght)
    End Function
    
    Public Sub writeINI(sINIFile As String, sSection As String, sKey As String, sValue As String)
        Dim n As Integer
        Dim sTemp As String
        sTemp = sValue
        For n = 1 To Len(sValue)
            If Mid$(sValue, n, 1) = vbCr Or Mid$(sValue, n, 1) = vbLf Then Mid$(sValue, n) = " "
        Next n
        n = WritePrivateProfileString(sSection, sKey, sTemp, sINIFile)
    End Sub
    
    Private Sub cmdSalva_Click()
        Dim ValoreDiRitorno As Long
        Dim NomeFile
        NomeFile = "c:\test.ini"
        ValoreDiRitorno = WritePrivateProfileString(txtSezione, txtChiave.Text, txtValore.Text, NomeFile)
        If ValoreDiRitorno = 0 Then
            MsgBox "Si è verificato un errore!", vbExclamation
        End If
    End Sub
    
    Private Sub cmdApri_Click()
        Dim ValoreDiRitorno As Long
        Dim NomeFile
        NomeFile = "c:\test.ini"
        Dim StringaDiRitorno As String * 50
        ValoreDiRitorno = GetPrivateProfileString(txtSezione, txtChiave, StringaDiRitorno, StringaDiRitorno, Len(StringaDiRitorno), NomeFile)
        If ValoreDiRitorno = 0 Then
            MsgBox "Si è verificato un errore!", vbExclamation
        Else
            txtValore.Text = Trim(StringaDiRitorno)
        End If
    End Sub
    Il form contiene 3 campi:
    txtSezione
    txtValore
    txtChiave
    e due pulsanti:
    cmdApri
    cmdSalva

    ti ringrazio
    ...cosa puoi fare con un rasoio,un limone ed un gatto?!?......
    d%asp%ide

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.