elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Almacenar opcion de OptionButton en archivo ini
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Almacenar opcion de OptionButton en archivo ini  (Leído 4,885 veces)
rapbyone

Desconectado Desconectado

Mensajes: 173


Ver Perfil
Almacenar opcion de OptionButton en archivo ini
« en: 6 Diciembre 2013, 12:22 pm »

Amigos les cuento, tengo el siguiente código, que me permite cambiar archivos de una carpeta a otra y ademas ir mostrando diferentes imágenes al revisar las opciones:

Código:
Private Sub Command1_Click()
'Si está seleccionado el Option1 se ejecuta la siguiente condición
If Option1.Value = True Then
   Kill "C:\destino\unknow_00053.fnt"
      MsgBox "Fuente por defecto"
End If

'Si está seleccionado el Option2 esta
If Option2.Value = True Then
FileCopy "C:\fnt\F2\unknow_00053.fnt", "C:\destino\unknow_00053.fnt"
MsgBox "Fuente cambiada"
End If

'Si está seleccionado el Option3 se ejecuta esta otra
If Option3.Value = True Then
FileCopy "C:\fnt\F3\unknow_00053.fnt", "C:\destino\unknow_00053.fnt"
MsgBox "Fuente cambiada"
End If

End Sub

Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)

End Sub

Private Sub Option1_Click()
Image3.Visible = False
Image2.Visible = False
Image1.Visible = True
End Sub

Private Sub Option2_Click()
Image3.Visible = False
Image2.Visible = True
Image1.Visible = False
End Sub

Private Sub Option3_Click()
Image3.Visible = True
Image2.Visible = False
Image1.Visible = False

Así se ve el programa:



Lo que quiero es que al elegir una opción, se cree un archivo ini, recordando la opción escogida, por lo tanto, si elijo la fuente 2, al cerrar y abrir el programa, este muestre la opción escogida.

Gracias amigos  ;-)


En línea

Danyfirex


Desconectado Desconectado

Mensajes: 493


My Dear Mizuho


Ver Perfil
Re: Almacenar opcion de OptionButton en archivo ini
« Respuesta #1 en: 6 Diciembre 2013, 14:09 pm »

Hola. podrias hacer algo masomenos así:



Código
  1. '--------for INI file read/write
  2. Private 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
  3. Private 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
  4. '-------------------
  5.  
  6. 'reads ini string
  7. Public Function ReadIni(FileName As String, Section As String, Key As String) As String
  8. Dim RetVal As String * 255, v As Long
  9. v = GetPrivateProfileString(Section, Key, "", RetVal, 255, FileName)
  10. ReadIni = Left(RetVal, v)
  11. End Function
  12.  
  13.  
  14. 'writes ini
  15. Public Sub WriteIni(FileName As String, Section As String, Key As String, Value As String)
  16. WritePrivateProfileString Section, Key, Value, FileName
  17. End Sub
  18.  
  19.  
  20.  
  21.  
  22. Private Sub Form_Load()
  23. Dim valorleido As String
  24. Dim NombreArchivo As String
  25. NombreArchivo = App.Path & "\Config.ini"
  26.  
  27. If Dir(NombreArchivo) <> "" Then 'verificamos si existe el archivo pa' cuando abrimos por primera vez
  28. valorleido = ReadIni(NombreArchivo, "Opcion", "Valor")
  29. Select Case valorleido 'verificamos el valor leido y asignamos
  30. Case "1"
  31. Option1.Value = True
  32. Case "2"
  33. Option2.Value = True
  34. Case "3"
  35. Option3.Value = True
  36. End Select
  37. End If
  38. End Sub
  39.  
  40. Private Sub Form_Unload(Cancel As Integer)
  41. Dim Str As String
  42. Dim miOboton As Control
  43. Dim valorescribir As String
  44. Dim NombreArchivo As String
  45. NombreArchivo = App.Path & "\Config.ini"
  46.  
  47. 'Verificamos cual option buttons esta seleccionado
  48. For Each miOboton In Me.Controls
  49. If TypeOf miOboton Is OptionButton And miOboton.Value = True Then
  50. Select Case miOboton.Name
  51. Case "Option1"
  52. valorescribir = "1"
  53. Case "Option2"
  54. valorescribir = "2"
  55. Case "Option3"
  56. valorescribir = "3"
  57. End Select
  58. End If
  59. Next
  60. WriteIni NombreArchivo, "Opcion", "Valor", valorescribir
  61. End Sub
  62.  


Quizás lo complique un poco :S. pero funciona bien.  :laugh:


En línea

rapbyone

Desconectado Desconectado

Mensajes: 173


Ver Perfil
Re: Almacenar opcion de OptionButton en archivo ini
« Respuesta #2 en: 6 Diciembre 2013, 15:10 pm »

 ;-) Gracias por la respuesta, deje así el código completo:

Código:
'--------for INI file read/write
Private 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
Private 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
'-------------------
 
Private Sub Command1_Click()
'Si está seleccionado el Option1 se ejecuta la siguiente condición
If Option1.Value = True Then
   Kill "C:\destino\unknow_00053.fnt"
      MsgBox "Fuente por defecto"
End If

'Si está seleccionado el Option2 esta
If Option2.Value = True Then
FileCopy "C:\fnt\F2\unknow_00053.fnt", "C:\destino\unknow_00053.fnt"
MsgBox "Fuente cambiada"
End If

'Si está seleccionado el Option3 se ejecuta esta otra
If Option3.Value = True Then
FileCopy "C:\fnt\F3\unknow_00053.fnt", "C:\destino\unknow_00053.fnt"
MsgBox "Fuente cambiada"
End If

End Sub

Private Sub Option1_Click()
Image3.Visible = False
Image2.Visible = False
Image1.Visible = True
End Sub

Private Sub Option2_Click()
Image3.Visible = False
Image2.Visible = True
Image1.Visible = False
End Sub

Private Sub Option3_Click()
Image3.Visible = True
Image2.Visible = False
Image1.Visible = False
End Sub
 

'reads ini string
Public Function ReadIni(FileName As String, Section As String, Key As String) As String
Dim RetVal As String * 255, v As Long
v = GetPrivateProfileString(Section, Key, "", RetVal, 255, FileName)
ReadIni = Left(RetVal, v)
End Function
 
 
'writes ini
Public Sub WriteIni(FileName As String, Section As String, Key As String, Value As String)
WritePrivateProfileString Section, Key, Value, FileName
End Sub
 
 
Private Sub Form_Load()
Dim valorleido As String
Dim NombreArchivo As String
NombreArchivo = App.Path & "\Config.ini"
 
If Dir(NombreArchivo) <> "" Then 'verificamos si existe el archivo pa' cuando abrimos por primera vez
valorleido = ReadIni(NombreArchivo, "Opcion", "Valor")
Select Case valorleido 'verificamos el valor leido y asignamos
Case "1"
Option1.Value = True
Case "2"
Option2.Value = True
Case "3"
Option3.Value = True
End Select
End If
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
Dim Str As String
Dim miOboton As Control
Dim valorescribir As String
Dim NombreArchivo As String
NombreArchivo = App.Path & "\Config.ini"
 
'Verificamos cual option buttons esta seleccionado
For Each miOboton In Me.Controls
If TypeOf miOboton Is OptionButton And miOboton.Value = True Then
Select Case miOboton.Name
Case "Option1"
valorescribir = "1"
Case "Option2"
valorescribir = "2"
Case "Option3"
valorescribir = "3"
End Select
End If
Next
WriteIni NombreArchivo, "Opcion", "Valor", valorescribir
End Sub

Pero al momento de cerrar el programa, me da este error:


En la depuración me marca esto:


Gracias por la ayuda
En línea

Danyfirex


Desconectado Desconectado

Mensajes: 493


My Dear Mizuho


Ver Perfil
Re: Almacenar opcion de OptionButton en archivo ini
« Respuesta #3 en: 6 Diciembre 2013, 15:55 pm »

Ups no me di cuenta que tenias un frame.  y los frames no tiene la propiedad value :S


cámbialo por este código.


Código
  1. Private Sub Form_Unload(Cancel As Integer)
  2. Dim Str As String
  3. Dim miOboton As Control
  4. Dim valorescribir As String
  5. Dim NombreArchivo As String
  6. NombreArchivo = App.Path & "\Config.ini"
  7.  
  8. 'Verificamos cual option buttons esta seleccionado
  9. For Each miOboton In Me.Controls
  10. If TypeOf miOboton Is OptionButton Then
  11. If miOboton.Value = True Then
  12. Select Case miOboton.Name
  13. Case "Option1"
  14. valorescribir = "1"
  15. Case "Option2"
  16. valorescribir = "2"
  17. Case "Option3"
  18. valorescribir = "3"
  19. End Select
  20. End If
  21. End If
  22. Next
  23. WriteIni NombreArchivo, "Opcion", "Valor", valorescribir
  24. End Sub
  25.  



saludos
En línea

rapbyone

Desconectado Desconectado

Mensajes: 173


Ver Perfil
Re: Almacenar opcion de OptionButton en archivo ini
« Respuesta #4 en: 6 Diciembre 2013, 19:00 pm »

Muchas gracias funciono perfecto.

Te quiero pedir lo ultimo por favor y es el problema que no he podido solucionar, lo que pasa es que mi programa es un launcher para un programa determinado.

El problema es que la ruta de instalación de ese programa cambia según los bits del sistema operativo, por lo tanto si quiero copiar un archivo a una carpeta que esta en archivos de programa. solo funcionaria en algunos pc, por ejemplo

en windows 32 bits:

Código:
If Option2.Value = True Then
FileCopy "C:\fnt\F2\unknow_00053.fnt", "C:\Archivos de programa\Messenger\fuentes"
End If

En windows 64 bits

Código:
If Option2.Value = True Then
FileCopy "C:\fnt\F2\unknow_00053.fnt", "Archivos de programa (x86)\Messenger\fuentes"
End If

Que se me ocurre ami:
Poder pedirle al usuario la primera ves que abre el programa que selecciona la ruta donde tiene instalado el programa y que se almacene en un archivo ini. y guardar la ruta escogida en una variable, algo así:

Código:
'Se declaran las variable
Dim RutaDatos as String

Private Sub Option1_Click()
RutaDatos = "ruta almacena en ini"
End Sub

Después para pegar el archivo me posicionaría en la ruta seleccionada por el usuario y pegaría el archivo.

Código:
If Option2.Value = True Then
FileCopy  RutaDatos/Font/unknow_00053.fnt"
End If

Se podría hacer algo así? ¿Como podría hacerlo?
Prometo no molestar mas si me ayudas por favor  :D
« Última modificación: 6 Diciembre 2013, 19:03 pm por rapbyone » En línea

Danyfirex


Desconectado Desconectado

Mensajes: 493


My Dear Mizuho


Ver Perfil
Re: Almacenar opcion de OptionButton en archivo ini
« Respuesta #5 en: 6 Diciembre 2013, 20:46 pm »

Pues para eso existe funciones.

ejemplo esta simple.

Código
  1. dim Archivosdeprograma as string
  2.  
  3. 'C:\Archivos de programa\  o Archivos de programa (x86) respectivamente
  4. Archivosdeprograma=Environ$("ProgramFiles")


saludos
En línea

rapbyone

Desconectado Desconectado

Mensajes: 173


Ver Perfil
Re: Almacenar opcion de OptionButton en archivo ini
« Respuesta #6 en: 6 Diciembre 2013, 21:11 pm »

Pues para eso existe funciones.

ejemplo esta simple.

Código
  1. dim Archivosdeprograma as string
  2.  
  3. 'C:\Archivos de programa\  o Archivos de programa (x86) respectivamente
  4. Archivosdeprograma=Environ$("ProgramFiles")


saludos

Perfecto, pero que pasaría si el programa estuviera instalado en otro unidad?? o en otra carpeta fuera de Archivos de programa?

De todas maneras muchas gracias, me has ayudado un monton :D
En línea

Danyfirex


Desconectado Desconectado

Mensajes: 493


My Dear Mizuho


Ver Perfil
Re: Almacenar opcion de OptionButton en archivo ini
« Respuesta #7 en: 6 Diciembre 2013, 21:27 pm »

pues entonces tiene que ver si ese programa crea alguna clave de registro.y guiarte por ahí.


saludos
En línea

rapbyone

Desconectado Desconectado

Mensajes: 173


Ver Perfil
Re: Almacenar opcion de OptionButton en archivo ini
« Respuesta #8 en: 12 Diciembre 2013, 15:00 pm »

Pues para eso existe funciones.

ejemplo esta simple.

Código
  1. dim Archivosdeprograma as string
  2.  
  3. 'C:\Archivos de programa\  o Archivos de programa (x86) respectivamente
  4. Archivosdeprograma=Environ$("ProgramFiles")


saludos

Me entro una duda, quedaría algo así? :

Código:

Private Sub Command1_Click()
Dim Archivosdeprograma As String
 
'C:\Archivos de programa\  o Archivos de programa (x86) respectivamente
Archivosdeprograma = Environ$("ProgramFiles")

FileCopy (Environ$("ProgramFiles") & "msn\dat\Launcher\Fonts\1\unknow_00053.fnt"), (Environ$("ProgramFiles") & "MSN\resources\unknow_00053.fnt")

End Sub

Como tendría que hacerlo?? por que me da error.
« Última modificación: 12 Diciembre 2013, 15:15 pm por rapbyone » En línea

Danyfirex


Desconectado Desconectado

Mensajes: 493


My Dear Mizuho


Ver Perfil
Re: Almacenar opcion de OptionButton en archivo ini
« Respuesta #9 en: 12 Diciembre 2013, 18:32 pm »

Verifica las rutas en un msgbox o consola.

así debería funcionar. se me olvido que Environ$ retorna sin el \
Código
  1. FileCopy (Environ$("ProgramFiles") & "\msn\dat\Launcher\Fonts\1\unknow_00053.fnt"), (Environ$("ProgramFiles") & "\MSN\resources\unknow_00053.fnt")
  2.  
  3.  

saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Almacenar archivo php en mysql
PHP
andryus 1 1,813 Último mensaje 11 Enero 2007, 13:34 pm
por Ertai
[batch]Almacenar el contenido de un archivo .txt en una variable. « 1 2 »
Scripting
MK-Ultra 17 19,068 Último mensaje 8 Julio 2008, 17:48 pm
por Coegho
Comando/opción MS-DOS insertar linea en archivo .txt [Solucionado]
Scripting
Forau 5 26,204 Último mensaje 7 Junio 2010, 17:22 pm
por flony
Todo lo que no descargarás de Facebook con la opcion “Crear mi archivo”
Noticias
wolfbcn 0 1,241 Último mensaje 23 Abril 2018, 21:28 pm
por wolfbcn
WaitList.dat, el archivo secreto de Windows que podría almacenar contraseñas ...
Noticias
wolfbcn 0 1,056 Último mensaje 19 Septiembre 2018, 15:10 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines