Pregunta sobre un codigo

Iniciado por CH4ØZ, 13 Octubre 2009, 02:51 AM

0 Miembros y 1 Visitante están viendo este tema.

CH4ØZ

hola el otro dia buscando codigos para trabajar con archivos .ini que me pudieran ayudar y servir de guia encontre este, pero hay una cosa que no entendi:
Código (vb) [Seleccionar]
Option Explicit 
 
Const APPLICATION As String = "MiPrograma" 
 
Dim m_Left As Single 
Dim m_Top As Single 
Dim m_Width As Single 
Dim m_Height As Single 
 
Dim Path_Archivo_Ini As String 
 
'Función api que recupera un valor-dato de un archivo Ini   
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" ( _   
    ByVal lpApplicationName As String, _   
    ByVal lpKeyName As String, _   
    ByVal lpDefault As String, _   
    ByVal lpReturnedString As String, _   
    ByVal nSize As Long, _   
    ByVal lpFileName As String) As Long 
 
'Función api que Escribe un valor - dato en un archivo Ini   
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" ( _   
    ByVal lpApplicationName As String, _   
    ByVal lpKeyName As String, _   
    ByVal lpString As String, _   
    ByVal lpFileName As String) As Long 
 
 
'Lee un dato _   
-----------------------------   
'Recibe la ruta del archivo, la clave a leer y _   
el valor por defecto en caso de que la Key no exista   
Private Function Leer_Ini(Path_INI As String, Key As String, Default As Variant) As String 
 
Dim bufer As String * 256   
Dim Len_Value As Long 
 
        Len_Value = GetPrivateProfileString(APPLICATION, _   
                                         Key, _   
                                         Default, _   
                                         bufer, _   
                                         Len(bufer), _   
                                         Path_INI)   
           
        Leer_Ini = Left$(bufer, Len_Value)   
 
End Function 
 
'Escribe un dato en el INI _   
-----------------------------   
'Recibe la ruta del archivo, La clave a escribir y el valor a añadir en dicha clave   
 
Private Function Grabar_Ini(Path_INI As String, Key As String, Valor As Variant) As String 
 
    WritePrivateProfileString APPLICATION, _   
                                         Key, _   
                                         Valor, _   
                                         Path_INI   
 
End Function 
 
 
Private Sub Form_Load()   
       
    'Path del fichero Ini   
    Path_Archivo_Ini = App.Path & "\config.ini" 
       
    ' Lee las Key y  Les envia el valor por defecto por si no existe   
    m_Left = Leer_Ini(Path_Archivo_Ini, "Left", 0)   
    m_Top = Leer_Ini(Path_Archivo_Ini, "Top", 0)   
    m_Width = Leer_Ini(Path_Archivo_Ini, "Width", 5000)   
    m_Height = Leer_Ini(Path_Archivo_Ini, "Height", 5000)   
       
    'Posiciona el formulario con los valores del archivo Ini   
    Move m_Left, m_Top, m_Width, m_Height   
       
End Sub 
 
Private Sub Form_Unload(Cancel As Integer)   
       
    'Escribe en el archivo Ini   
       
    'Posición del Form   
    Call Grabar_Ini(Path_Archivo_Ini, "Left", Me.Left)   
    Call Grabar_Ini(Path_Archivo_Ini, "Top", Me.Top)   
       
    'Tamaño del formulario   
    Call Grabar_Ini(Path_Archivo_Ini, "Width", Me.Width)   
    Call Grabar_Ini(Path_Archivo_Ini, "Height", Me.Height)   
       
End Sub 


porque en el evento load del form no se llama a la funcion Leer_Ini, mientras que en el evento Unload del form si se lo hace?

gracias
no me juzguen si no me conocen

Dessa

#1
Cita de: the_chaoz en 13 Octubre 2009, 02:51 AM

porque en el evento load del form no se llama a la funcion Leer_Ini, mientras que en el evento Unload del form si se lo hace?

gracias

Private Sub Form_Load()  

   'Path del fichero Ini  
   Path_Archivo_Ini = App.Path & "\config.ini"  

   ' Lee las Key y  Les envia el valor por defecto por si no existe  
   m_Left = Leer_Ini(Path_Archivo_Ini, "Left", 0)  
   m_Top = Leer_Ini(Path_Archivo_Ini, "Top", 0)  
   m_Width = Leer_Ini(Path_Archivo_Ini, "Width", 5000)  
   m_Height = Leer_Ini(Path_Archivo_Ini, "Height", 5000)  

   'Posiciona el formulario con los valores del archivo Ini  
   Move m_Left, m_Top, m_Width, m_Height  

End Sub  

Estas llamando 4 veces a la funcion leer_ini cuyo resultado es : Leer_Ini = Left$(bufer, Len_Value)


PD: Hay que leer_ini  mas   ;)  (va con onda)



Adrian Desanti

CH4ØZ

o sea
yo lo que quiero saber es xq en uno se usa la funcion call y en el otro se lo hace de otra forma?
se puede hacer de cualquier forma?
no me juzguen si no me conocen

BlackZeroX

#3
Cita de: the_chaoz en 13 Octubre 2009, 04:08 AM
o sea
yo lo que quiero saber es xq en uno se usa la funcion call y en el otro se lo hace de otra forma?
se puede hacer de cualquier forma?

es sencillo call esta hecho para procesos que por ende no devuelven valores de ningun tipo en vb6 pero las funciones si las devuelven y al llamarlas estas pueden devolver un valor , aunque ambas en este caso son funciones la de grabar no devuelve dato alguno por ello se puso call pero al leer la funcion devuelve un valor segun el caso sea en esas dos funciones

leerini <-- devuelve un valor
grabarini <. no devuelve pero igual puede ser llamada que leerini pero no se guardaria el valor leeido en ningun lugar se perderia.

Código (vb) [Seleccionar]

public function mensaje() as string
   mensaje="hola"
end function

private sub form_load()
   msgbox mensaje ' te dira Hola
   call mensaje ' se perdera lo que devuelve dicha funcion xS
   mensaje ' se perdera lo que devuelve dicha funcion xS
end sub


P.D.: hay que ver mejor el codigo por ejemplo este



Dulces Lunas
The Dark Shadow is my passion.