Autor Tema: Abrir, modificar y cerrar archivos - VB6  (Leído 12215 veces)

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

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Abrir, modificar y cerrar archivos - VB6
« en: 18 de Septiembre de 2007, 14:48:52 »
Hola amigos

En un programa tengo una ventanita de configuración. Esta ventanita cada que se corre el programa se le meten datos como:

- Correo electrónico - string
- Servidor SMTP - string
- Voltajes - flotante
- ¿Quiere enviar email? - booleano
- Número de baterías - integer
... etc.

Pero esto hay que hacerlo una y otra vez cada que se cierra o abre el programa. La duda es... ¿cómo guardo eso en un archivo para que mi programa lo lea y el usuario no lo tenga que estar configurando una y otra vez?

A sugerencia del compañero Palitroquez bajé el archivo fuente de uno de los programas que él escribió, en el que abre y modifica archivos de texto. Me puse a leerlo pero la verdad me es complicado todavía. El mensaje de ese programa es:

http://www.todopic.com.ar/foros/index.php?topic=14552.msg93533#msg93533

El archivo se llama cgram_picture.rar.

Quisiera que alguien me ayudara a sintetizar ese programa, entender la parte del manejo de archivos.

Y también si alguien conoce una forma más fácil de hacer lo mismo por favor no deje de avisarnos.

Gracias  :-/

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Abrir, modificar y cerrar archivos - VB6
« Respuesta #1 en: 18 de Septiembre de 2007, 18:13:06 »
Aquí hay un ejemplillo de como guardar/abrir datos a un archivo. Existe una ventana prinicpal que llama a otra oculta, la ventana oculta es donde se configura los parametros, los datos se guardaran en un archivo llamado configuracion.ini.

por supuesto como todo es configurable/modificable, en primera instancia asumí todos los datos como strings, el archivo debe existir y con una plantilla de datos guardado por defecto. También falta implementar la etapa de control de errores (que los dejé como comentarios para usarlos mas adelante), así como está Mig funciona perfectamente, ya tienes una idea de como orientarte en cuanto al manejo de archivos.

« Última modificación: 18 de Septiembre de 2007, 18:17:30 por PalitroqueZ »
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Abrir, modificar y cerrar archivos - VB6
« Respuesta #2 en: 19 de Septiembre de 2007, 11:22:05 »
Gracias Pedro

Voy a estudiarlo y publico mis resultados  :wink:

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Abrir, modificar y cerrar archivos - VB6
« Respuesta #3 en: 20 de Septiembre de 2007, 19:56:05 »
Hola migsantiago!

Te comento que la WINAPI ya posee librerias para el manejo de archivos .ini en formato standart.

Te paso el modulo. Agregalo a tu proyecto y te explico las funciones:

Escribir_INI(Filename As String, Key_Value As String, Key_Name As String, Value As String) As Long

Filename: Ruta del archivo .ini
Key_Value: Nombre de la categoria
Key_Name: Nombre de la variable
Value: Valor

Devuelve: un long para comprobar que se escribio correctamente.

Ejemplo:

El siguiente código:

Dim Ruta As String, CorreoElectronico As String, ServidorSMTP As String, EnviarEmail As Boolean, Voltajes As Single, NumBat As Integer

Ruta = "C:\Config.ini"
CorreoElectronico = "info@todopic.com.ar"
ServidorSMTP = "smtp.mail.todopic.com.ar"
EnviarEmail = True
Voltajes = 10.12
NumBat = 5

Escribir_INI Ruta, "Mensaje", "Correo electrónico", CorreoElectronico
Escribir_INI Ruta, "Mensaje", "Servidor SMTP", ServidorSMTP
Escribir_INI Ruta, "Mensaje", "Enviar email", CStr(Abs(CInt(EnviarEmail)))    'ojo con los booleanos que sino se guardan mal
Escribir_INI Ruta, "Energia", "Voltajes", CStr(Voltajes)
Escribir_INI Ruta, "Baterias", "Cantidad", CStr(NumBat)

genera un archivo(si no existia) C:\Config.ini cuyo contenido es:

[Mensaje]
Correo electrónico=info@todopic.com.ar
Servidor SMTP=smtp.mail.todopic.com.ar
Enviar email=1
[Energia]
Voltajes=10,12
[Baterias]
Cantidad=5





Para leer ahora la configuracion escrita:

Leer_INI(Filename As String, Key_Value As String, Key_Name As String, Optional ByVal Default As String) As String

Filename: Ruta del archivo .ini
Key_Value: Nombre de la categoria
Key_Name: Nombre de la variable
Default: Si algo falla en la lectura(sea porque el archivo no existe o alguno de sus campos) devolver este valor.

devuelve: cadena(siempre STRING) leida.

Ejemplo:

El siguiente código:

CorreoElectronico = Leer_INI(Ruta, "Mensaje", "Correo electrónico", "Error")
ServidorSMTP = Leer_INI(Ruta, "Mensaje", "Servidor SMTP", "Error")
EnviarEmail = CBool(Leer_INI(Ruta, "Mensaje", "Enviar email", "0"))
Voltajes = CSng(Leer_INI(Ruta, "Energia", "Voltajes", "-1"))
NumBat = CInt(Leer_INI(Ruta, "Baterias", "Cantidad", "0"))

MsgBox CorreoElectronico
MsgBox ServidorSMTP
MsgBox EnviarEmail
MsgBox Voltajes
MsgBox NumBat

Lee los valores y los va mostrando para corroborar que los lee y convierte bien.

Espero que te sirva. Es lo mas sencillo que hay....

Saludos!
« Última modificación: 21 de Septiembre de 2007, 16:45:12 por BrunoF »
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Abrir, modificar y cerrar archivos - VB6
« Respuesta #4 en: 21 de Septiembre de 2007, 11:34:43 »
Pedro, analicé tu código, lo copié y modifiqué a mi aplicación, tuve problemas en cuanto a una variable que no se guardaba, lo leí con paciencia, y al final... funcionó  :D  :-/

Agradezco el súper ejemplo Pedro, más fácil no pudiste haberlo hecho  :D

Pego mi código. Primero escribí un archivo llamado ewbm.cfg con el siguiente contenido:

Código: [Seleccionar]
"1","juanito@perez.com","chanito@rodriguez.com","smtp.email.com","1","123","123","5","1","9.9","11.9","13.9"
Y luego el código para leerlo es el siguiente...

Código: [Seleccionar]
'Función para leer archivo de configuración
Public Sub Open_ewbm()
    On Error GoTo salida2
   
    Open "ewbm.cfg" For Input As #5
        Input #5, arcEnvio, arcEmail, arcRemite, arcSrvsmtp, arcAuth, arcUser, _
        arcPassword, arcPoll_time, arcStrings, arcVlow, _
        arcVokmin, arcVokmax
       
        chkEmail.Value = Val(arcEnvio)
        txtEmail.Text = arcEmail
        txtRemite.Text = arcRemite
        txtSrvsmtp.Text = arcSrvsmtp
        chkAuth.Value = Val(arcAuth)
        txtUser.Text = arcUser
        txtPassword.Text = arcPassword
        txtPoll_time.Text = arcPoll_time
        txtStrings.Text = arcStrings
        txtVlow.Text = arcVlow
        txtVokmin.Text = arcVokmin
        txtVokmax.Text = arcVokmax
    Close #5
   
    Exit Sub
salida2:
    MsgBox "Ocurrió un error al abrir el archivo."
    End
End Sub

Y el código para escribirlo es el siguiente...

Código: [Seleccionar]
'Función para guardar cambios
Private Sub Save_ewbm()
    On Error GoTo salida
   
    'copia las variables en pantalla
    arcEnvio = CStr(Abs(CInt(chkEmail.Value)))
    arcEmail = txtEmail.Text
    arcRemite = txtRemite.Text
    arcSrvsmtp = txtSrvsmtp.Text
    arcAuth = CStr(Abs(CInt(chkAuth.Value)))
    arcUser = txtUser.Text
    arcPassword = txtPassword.Text
    arcPoll_time = txtPoll_time.Text
    arcStrings = txtStrings.Text
    arcVlow = txtVlow.Text
    arcVokmin = txtVokmin.Text
    arcVokmax = txtVokmax.Text
   
    'abre archivo y luego cambia las variables
    Open "ewbm.cfg" For Output As #5
        Write #5, arcEnvio, arcEmail, arcRemite, arcSrvsmtp, arcAuth, arcUser, _
        arcPassword, arcPoll_time, arcStrings, arcVlow, _
        arcVokmin, arcVokmax
    Close #5
   
    Exit Sub
   
salida:
    MsgBox "Ocurrió un error al guardar el archivo."
    End
End Sub

Muchas gracias Pali.


Estimado Bruno,

Se ve más robusto el código que das, pero es un poco más largo... aunque no está difícil. Ya no lo pude probar porque ya iba encarrerado con el código de Pedro, pero también te lo agradezco.  :mrgreen: :wink: Usé las funciones de tu código en el código de Pedro para evitar errores.

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Abrir, modificar y cerrar archivos - VB6
« Respuesta #5 en: 21 de Septiembre de 2007, 16:19:34 »
Hola amigos,

Bruno , una pregunta: en tu código no veo la llamada a la apis ó un método que haga la de acceder al disco.

¡que bien mig !
añadiendo otro ingrediente al código, se puede mejorar el tratamiento de los errores, es decir, que se puede saber cuál exactamente es el error (el no abrir el archivo no es el único) e informarlo mediante un msgbox

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Abrir, modificar y cerrar archivos - VB6
« Respuesta #6 en: 21 de Septiembre de 2007, 16:46:05 »
Hola migSantiago!,Pedro!

Por lo visto me habia olvidado de adjuntar el modulo(.bas) con las funciones que describi.

Ahi lo corregi.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Abrir, modificar y cerrar archivos - VB6
« Respuesta #7 en: 21 de Septiembre de 2007, 17:00:13 »
interesante api, se parece a las que se usan para acceder al registro de windows.
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Abrir, modificar y cerrar archivos - VB6
« Respuesta #8 en: 22 de Septiembre de 2007, 21:34:09 »
jejeje Bruno gracias

Pedro, pues el archivo siempre va a estar ahí y si el usuario lo llega a abrir o a borrar pues que mejor que se cierre el programa. No hay problema, mejor que lo reinstale. :D


 

anything