Título: Pregunta sobre un codigo
Publicado por: CH4ØZ en 13 Octubre 2009, 02:51 am
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: 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
Título: Re: Pregunta sobre un codigo
Publicado por: Dessa en 13 Octubre 2009, 03:39 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)
Título: Re: Pregunta sobre un codigo
Publicado por: CH4ØZ 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?
Título: Re: Pregunta sobre un codigo
Publicado por: BlackZeroX en 13 Octubre 2009, 04:21 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. 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
|