Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: BorecK en 15 Enero 2007, 00:33 am



Título: Ayuda con una variable
Publicado por: BorecK en 15 Enero 2007, 00:33 am
Hola a todos, tengo un nuevo problema, resulta que quiero guardar una ruta de directorio por ejemplo: (C:\Archivos de programa) en una variable Global, supongamos que en un formulario necesito guardar la ruta en una variable global para manejar esa ruta en otro formulario mi problema es que no se guarda en la variable ya intente con integer, string, long hasta boolean.... yo se que no se declaran asi pero pues me desespere y intente de todo el codigo es el siguiente:

Código:
FORM 1
Private Sub Buscar_Click()
    On Error GoTo ErrorBuscar
    CMDialog.Filter = "Formato de sonido MP3 (*.mp3)|*.mp3|Archivos de audio (*.wav)|*.wav|Formato de sonido MIDI (*.midi)|*.midi|Todos los Archivos (*.*)|*.*"
    CMDialog.FilterIndex = 1
    CMDialog.Action = 1
     RutaText.Text = FRMConfiguracion.CMDialog.FileName
SalirBuscar:
    Exit Sub
ErrorBuscar:
    MsgBox Err.Description, 16, "ERROR"
    Resume SalirBuscar
End Sub

Private Sub Salvar_Click()
RutaText = Sonido
Unload Me
End Sub

FORM 2
Private Sub Timer1_Timer()
HoraActual.Caption = Time$
If Hora.Text <= HoraActual And DespertadorSi = True Then
On Error Resume Next
Set Objeto = CreateObject("WScript.Shell")
Objeto.Run Sonido
Beep
End If
End Sub

MODULE 1
Global Sonido As Integer

que debo hacer?


Título: Re: Ayuda con una variable
Publicado por: BorecK en 15 Enero 2007, 01:26 am
Ya lo solucione, la variable global tenia que ser string y en donde dice:

Código:
Private Sub Salvar_Click()
RutaText = Sonido
Unload Me
End Sub

lo cambie por:

Código:
Private Sub Salvar_Click()
Sonido = CMDialog.FileName
Unload Me
End Sub

El programa es un despertador donde puedes elegir la musica con la cual te va a despertar pero ahora me encontre con un problema que no puedo solucionar... para que reprodusca la musica tiene que tener un nombre corto como: Sonido.mp3 y debe estar en la ruta C:\ por ejemplo: C:\Sonido.mp3, lo que quiero es poder programarlo para abrir musica de mi carpeta Mi Musica y que acepte nombres como: C:\Documents and Settings\KillerByte\Mis documentos\Mi música\Billy Talent\05 - pins and needles.mp3, al parecer no acepta que los nombres de la cancion tengan espacios: 05 - pins and needles.mp3 ni acepta las rutas tan largas.... me puse a pensar y dije pues le pondre a la global String*100 pero no creo que sea eso... me sigue fallando podrian ayudarme  :-(


Título: Re: Ayuda con una variable
Publicado por: NYlOn en 15 Enero 2007, 09:12 am
Lo que necesitas es que la ruta completa sea mas corta, como las usaba el DOS (creo xD).
Lo solucionas usando la API GetShortPathName del siguiente modo:
Código:
Private Declare Function GetShortPathName Lib "kernel32.dll" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long

Private Sub Form_Load()
    Dim Ubicacion As String, retUbicacion As String
    retUbicacion = Space(255)
    Ubicacion = "c:\Archivos de programa\eMule\Incoming\08-Marcha de san lorenzo.mp3"
    GetShortPathName Ubicacion, retUbicacion, 255
    MsgBox retUbicacion
End Sub

Despues vos adaptalo a tu programa, espero que te sirva.

Saludos.-