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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [Duda] Insertar a este código, Mensaje de Error en caso de...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Duda] Insertar a este código, Mensaje de Error en caso de...  (Leído 2,169 veces)
Soir

Desconectado Desconectado

Mensajes: 25



Ver Perfil
[Duda] Insertar a este código, Mensaje de Error en caso de...
« en: 14 Agosto 2010, 18:00 pm »

Hola!...


Bueno, tengo una duda, y msdn, no me ayuda mucho en esto...

Tengo el siguiente código.

Código:
Private Sub cmdDownload_Click()
Screen.MousePointer = vbHourglass

ProgressBar1.Value = 0

ProgressBar1.Visible = True 'Mostrar barra de progreso

'Lista de Archivos de Descarga
DownloadFile "http://dynamite.es/updates/WoD.exe", App.Path & "\WoD.exe"
DownloadFile "http://dynamite.es/updates/Patch-a.MPQ", App.Path & "\Data\Patch-a.MPQ"

Screen.MousePointer = vbDefault
MsgBox "Actualización Completada"

ProgressBar1.Visible = False

End Sub

Private Sub Form_Load()

Me.Caption = "Dynamite Updater - V1.0"

ProgressBar1.Visible = True

End Sub

Sub DownloadProgress(intPercent As String)
    ProgressBar1.Value = intPercent ' Actualizar Proceso Mientras se Descarga
End Sub


'Funcion de Descarga de Archivo (strURL As String, strDestination As String) As Boolean
Public Sub DownloadFile(strURL As String, strDestination As String) 'As Boolean
Const CHUNK_SIZE As Long = 1024
Dim intFile As Integer
Dim lngBytesReceived As Long
Dim lngFileLength As Long
Dim strHeader As String
Dim b() As Byte
Dim i As Integer

DoEvents
    
With Inet1
    
.URL = strURL
.Execute , "GET", , "Range: bytes=" & CStr(lngBytesReceived) & "-" & vbCrLf
        
While .StillExecuting
DoEvents
Wend

strHeader = .GetHeader
End With
    
    
strHeader = Inet1.GetHeader("Content-Length")
lngFileLength = Val(strHeader)

DoEvents
    
lngBytesReceived = 0

intFile = FreeFile()

Open strDestination For Binary Access Write As #intFile

Do
b = Inet1.GetChunk(CHUNK_SIZE, icByteArray)
Put #intFile, , b
lngBytesReceived = lngBytesReceived + UBound(b, 1) + 1

DownloadProgress (Round((lngBytesReceived / lngFileLength) * 100))
DoEvents
Loop While UBound(b, 1) > 0

Close #intFile
 
End Sub

Este código lo uso para actualizar unos archivos de un juego... Que son imprescindibles para mi servidor.

La duda, es, el programa descarga los archivos y uno de esos archivos, lo inserta en la carpeta \Data\

Entonces, quería saber, como insertarle un mensaje para que cuando el programa no encuentre la carpeta \Data\ salga X mensaje.

Ahora, cuando no la encuentra sale este error:



Espero la ayuda... Muchas gracias :D


« Última modificación: 14 Agosto 2010, 18:02 pm por Soir » En línea

Fitoschido

Desconectado Desconectado

Mensajes: 248



Ver Perfil WWW
Re: [Duda] Insertar a este código, Mensaje de Error en caso de...
« Respuesta #1 en: 14 Agosto 2010, 18:25 pm »

Código
  1. On Error GoTo RutinaError
  2.  
  3. ...
  4.  
  5. RutinaError:
  6.  

Y bajo RutinaError pones:

Si Carpeta "\Data" no existe Entonces
MsgBox "No se encontró la carpeta de datos del juego" (o lo que quieras.

Te lo pongo como pseudocódigo porque no sé si lo de FileExists existe en VB6, y no me acuerdo ahorita :D


En línea

El que sabe hace, el que no enseña


Miembro oficial del proyecto Ubuntu, traductor de LibreOffice/Ubuntu/Xfce/Gnome.
Soir

Desconectado Desconectado

Mensajes: 25



Ver Perfil
Re: [Duda] Insertar a este código, Mensaje de Error en caso de...
« Respuesta #2 en: 14 Agosto 2010, 23:38 pm »

Código
  1. On Error GoTo RutinaError
  2.  
  3. ...
  4.  
  5. RutinaError:
  6.  

Y bajo RutinaError pones:

Si Carpeta "\Data" no existe Entonces
MsgBox "No se encontró la carpeta de datos del juego" (o lo que quieras.

Te lo pongo como pseudocódigo porque no sé si lo de FileExists existe en VB6, y no me acuerdo ahorita :D

Mira se lo inserte aqui:
Código:
Private Sub cmdDownload_Click()
Screen.MousePointer = vbHourglass

ProgressBar1.Value = 0

ProgressBar1.Visible = True 'Mostrar barra de progreso

'Lista de Archivos de Descarga
DownloadFile "http://dynamite.es/updates/WoD.exe", App.Path & "\WoD.exe"
DownloadFile "http://dynamite.es/updates/Patch-a.MPQ", App.Path & "\Data\Patch-a.MPQ"

[b]On Error GoTo RutinaError
RutinaError:
MsgBox "No se encontró la carpeta de datos del juego"[/b]


Screen.MousePointer = vbDefault
MsgBox "Actualización Completada"

ProgressBar1.Visible = False

End Sub

Private Sub Form_Load()

Me.Caption = "Dynamite Updater - V1.0"

ProgressBar1.Visible = True

End Sub

Sub DownloadProgress(intPercent As String)
    ProgressBar1.Value = intPercent ' Actualizar Proceso Mientras se Descarga
End Sub


'Funcion de Descarga de Archivo (strURL As String, strDestination As String) As Boolean
Public Sub DownloadFile(strURL As String, strDestination As String) 'As Boolean
Const CHUNK_SIZE As Long = 1024
Dim intFile As Integer
Dim lngBytesReceived As Long
Dim lngFileLength As Long
Dim strHeader As String
Dim b() As Byte
Dim i As Integer

DoEvents
   
With Inet1
   
.URL = strURL
.Execute , "GET", , "Range: bytes=" & CStr(lngBytesReceived) & "-" & vbCrLf
       
While .StillExecuting
DoEvents
Wend

strHeader = .GetHeader
End With
   
   
strHeader = Inet1.GetHeader("Content-Length")
lngFileLength = Val(strHeader)

DoEvents
   
lngBytesReceived = 0

intFile = FreeFile()

Open strDestination For Binary Access Write As #intFile

Do
b = Inet1.GetChunk(CHUNK_SIZE, icByteArray)
Put #intFile, , b
lngBytesReceived = lngBytesReceived + UBound(b, 1) + 1

DownloadProgress (Round((lngBytesReceived / lngFileLength) * 100))
DoEvents
Loop While UBound(b, 1) > 0

Close #intFile
 
End Sub

Y sale, cuando descarga los archivos, salen los 2 mensajes...

Probaré a cambiarlo de lugar...

Gracias ^^
En línea

cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: [Duda] Insertar a este código, Mensaje de Error en caso de...
« Respuesta #3 en: 14 Agosto 2010, 23:56 pm »

debes colocar un Exit Function antes de la etiqueta RutinaError

Así está mal:
Código:
[b]On Error GoTo RutinaError
RutinaError:
MsgBox "No se encontró la carpeta de datos del juego"[/b]


Screen.MousePointer = vbDefault
MsgBox "Actualización Completada"

ProgressBar1.Visible = False

End Sub

La etiqueta RutinaError la pones al final del sub, la idea es que el procedimiento que sigue luego de ella se ejecute solo si se produce el error
En línea

Fitoschido

Desconectado Desconectado

Mensajes: 248



Ver Perfil WWW
Re: [Duda] Insertar a este código, Mensaje de Error en caso de...
« Respuesta #4 en: 15 Agosto 2010, 00:15 am »

Haz lo que te dice Cassiani, y quitale los "[ b ]" que hay en la etiqueta... ¿No te causa Syntax Error? xD
« Última modificación: 15 Agosto 2010, 00:22 am por Fitoschido » En línea

El que sabe hace, el que no enseña


Miembro oficial del proyecto Ubuntu, traductor de LibreOffice/Ubuntu/Xfce/Gnome.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines