Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Cambiar definitivamente el calor de una variable

Estas en el tema de Cambiar definitivamente el calor de una variable en el foro de Visual Basic clásico en Foros del Web. Saludos: Como puedo hacer para que cuando ocurra un evento en mi aplicación el valor de una variable cambie definitívamente. Los explico mejor: tengo por ...
  #1 (permalink)  
Antiguo 30/05/2008, 15:06
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 21 años
Puntos: 8
Cambiar definitivamente el calor de una variable

Saludos:

Como puedo hacer para que cuando ocurra un evento en mi aplicación el valor de una variable cambie definitívamente.

Los explico mejor: tengo por decir una variable publica llamada nVal, pero quiero que cuando el usuario intente ingresar su clave y esta sea fallida, a la tercera vez esta variable cambie de valor, de 1 (que es inicialmente) a 0.

Al momento puedo hacer que suceda, pero al volver a correr el programa el valor de nVal vuelve a ser 1.
__________________
El aprendiz.
  #2 (permalink)  
Antiguo 30/05/2008, 15:11
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Cambiar definitivamente el calor de una variable

Cita:
Iniciado por juandedios Ver Mensaje
Saludos:

Como puedo hacer para que cuando ocurra un evento en mi aplicación el valor de una variable cambie definitívamente.

Los explico mejor: tengo por decir una variable publica llamada nVal, pero quiero que cuando el usuario intente ingresar su clave y esta sea fallida, a la tercera vez esta variable cambie de valor, de 1 (que es inicialmente) a 0.

Al momento puedo hacer que suceda, pero al volver a correr el programa el valor de nVal vuelve a ser 1.
Para hacerlo debes guardarlo en alguna parte, ya sea en una base de datos, en un archivo de texto, en el registro de Windows, etc... Dime dónde quieres guardar y te diré cómo.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 30/05/2008, 15:58
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 21 años
Puntos: 8
Respuesta: Cambiar definitivamente el calor de una variable

En el registro de Windows
__________________
El aprendiz.
  #4 (permalink)  
Antiguo 03/06/2008, 08:25
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Cambiar definitivamente el calor de una variable

Copia ésto en un módulo:
Código:
 
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Public Enum Registry
    HKEY_CLASSES_ROOT = &H80000000
    HKEY_CURRENT_USER = &H80000001
    HKEY_LOCAL_MACHINE = &H80000002
    HKEY_USERS = &H80000003
    HKEY_CURRENT_CONFIG = &H80000005
End Enum
Private Const REG_SZ = 1
Sub regWrite(ByVal rLocal As Registry, ByVal SubKey As String, ByVal ValueName As String, ByVal Value As String)
On Error Resume Next
Dim hKey As Long
RegCreateKey rLocal, SubKey, hKey
RegOpenKey rLocal, SubKey, hKey
RegSetValueEx hKey, ValueName, 0, REG_SZ, ByVal Value, Len(Value)
RegCloseKey hKey
End Sub
Function regRead(ByVal rLocal As Registry, ByVal SubKey As String, ByVal ValueName As String) As String
On Error Resume Next
Dim Reply As Long
Dim DataSize As Long
Dim ValueType As Long
Dim GetValue As String
Dim hKey As Long
RegOpenKey rLocal, SubKey, hKey
Reply = RegQueryValueEx(hKey, ValueName, 0&, ValueType, ByVal 0&, DataSize)
If Reply = 0& Then
    If ValueType = REG_SZ Then
        GetValue = String(DataSize, Chr(0))
        Reply = RegQueryValueEx(hKey, ValueName, 0&, 0&, ByVal GetValue, DataSize)
        If Reply = 0& Then
            GetValue = Left(GetValue, InStr(1, GetValue, Chr(0)) - 1)
            regRead = GetValue
        End If
    End If
End If
RegCloseKey hKey
End Function
Sub regDelete(ByVal rLocal As Registry, ByVal SubKey As String)
Dim hKey As Long
RegOpenKey rLocal, SubKey, hKey
RegDeleteKey hKey, ""
RegCloseKey hKey
End Sub
Para guardar:
Código:
 
regWrite HKEY_LOCAL_MACHINE, "SOFTWARE\DavidElGrande", "nVal", CStr(nVal)
Para recuperar valor:
Código:
 
nVal = Val(regRead(HKEY_LOCAL_MACHINE, "SOFTWARE\DavidElGrande", "nVal"))
Saludos
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:24.