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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Cuando compilo mi aplicación, no funciona.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Cuando compilo mi aplicación, no funciona.  (Leído 10,523 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Cuando compilo mi aplicación, no funciona.
« en: 21 Noviembre 2012, 16:27 pm »

Cuando compilo la app y la ejecuto me sale esto:



Pero cuando ejecuto la app desde el IDE no me sale ningún error (Bueno, menos en la consola, me sale una excepción en rojo) pero el programa funciona perfectamente apesar de esa excepción...

¿Hay alguna manera de evitar que salga esa ventana sin tener que investigar dentro del código del form?


En línea

Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: Cuando compilo mi aplicación, no funciona.
« Respuesta #1 en: 21 Noviembre 2012, 16:31 pm »

Esa ventana es aviso de una excepción no controlada, si lees da mucha información acerca de donde y como se dio el error, tienes que revisar el código en el lugar donde te dice que lo hubo, buscando valores inválidos, variables no inicializadas, divisiones por 0, desbordamientos y ese tipo de cosas.

Al menos allí se logra ver IndexOutOfRangeException, que es un tipo de excepción que resulta de excederse del Index en un arreglo, Por ejemplo una lista contiene 5 elementos, eso quiere decir que contiene los Index del 0 al 4, intentar llamar al 5 acabaría en esta excepción. Se puede ver que el error da en CargarPropiedades y que a su vez este método se llama desde el evento Form.Load.


« Última modificación: 21 Noviembre 2012, 16:34 pm por Keyen Night » En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Cuando compilo mi aplicación, no funciona.
« Respuesta #2 en: 21 Noviembre 2012, 16:35 pm »

Esa ventana es aviso de una excepción no controlada, si lees da mucha información acerca de donde y como se dio el error, tienes que revisar el código en el lugar donde te dice que lo hubo, buscando valores inválidos, variables no inicializadas, divisiones por 0, desbordamientos y ese tipo de cosas.

Gracias, pero entonces no se puede desactivar ese tipo de avisos desde el "app.config" o en algún sitio?


EDITO: Te agradezco mucho los datos que me has dado pero no me apetece nada buscar " divisiones por 0, desbordamientos" porque nos e hacerlo, y la app funciona perfectamente aunque el debugger me diga que no.

Lo he arreglado de una manera más fácil, añadiendo una excepción en el form load.  :xD

Un saludo
« Última modificación: 21 Noviembre 2012, 16:45 pm por EleKtro H@cker » En línea

Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: Cuando compilo mi aplicación, no funciona.
« Respuesta #3 en: 21 Noviembre 2012, 16:43 pm »

Un error es señal de que algo anda mal, lo correcto es corregirlo no ignorarlo. No puedes caer ante un error, porque en todos los proyectos hasta en los mejores y más grandes incluso con los mejores programadores, los errores existen y la lógica es combatirlos. Aunque si en verdad deseas ignorarlo.....

En Configuraciones del Proyecto, puedes Activar el Handler de excepciones no controladas, y filtrar esta excepción para así ignorarla.

Proyecto > Aplicación (Es una pestaña) > Ver eventos de aplicaciones (Es un botón esta abajo al final) > Se abre una nueva ventana de código busca y agrega el evento UnhandledException > Y agregas esto:

Código
  1.            If TypeOf e.Exception Is IndexOutOfRangeException Then
  2.                e.ExitApplication = False
  3.            End If

Tienes que tener en cuenta que cuando se da un error en un método todo el código que prosigue al lugar donde se dio el error no se ejecuta y el método se corta violentamente.

Código
  1.  
  2. Dim A As Integer = 5
  3. Dim B As Integer = 1
  4.  
  5. B -= 1
  6.  
  7. Dim C As Integer = A / B 'Error'
  8.  
  9. 'Desde aquí se corta el método'
  10.  
  11. MessageBox.Show(C)
  12.  
  13.  

Este código tiene un error común, una variable se vuelve cero en tiempo de ejecución luego se hace una division que resulta en error, si configuramos nuestra aplicación para ignorar el error, entonces el valor de C nunca sería calculado y el mensaje tampoco seria mostrado
« Última modificación: 21 Noviembre 2012, 16:49 pm por Keyen Night » En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: Cuando compilo mi aplicación, no funciona.
« Respuesta #4 en: 21 Noviembre 2012, 16:47 pm »

Es mala practica no controlar los errores, debes manejar todas las excepciones, validar absolutamente todo.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Cuando compilo mi aplicación, no funciona.
« Respuesta #5 en: 21 Noviembre 2012, 16:51 pm »

Es mala practica no controlar los errores, debes manejar todas las excepciones, validar absolutamente todo.

Tienes toda la razón, es mala práctica, pero pienso que para solventar ese tipo de cosas hay que tener mejor dominio del lenguaje, del que tengo yo.

Un saludo!
En línea

Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: Cuando compilo mi aplicación, no funciona.
« Respuesta #6 en: 21 Noviembre 2012, 16:54 pm »

Coloca el código que esta en Form_Load, nunca digas que no puedes hacer algo, aquí todos comenzamos con Hola Mundo, y como tu puedes ver ya has avanzado ¿o no? ;) No te rindas tan fácilmente se necesita mucha perseverancia para terminar un proyecto precisamente por la paciencia que hay que tener para hallar y solucionar los errores.
« Última modificación: 21 Noviembre 2012, 16:57 pm por Keyen Night » En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Cuando compilo mi aplicación, no funciona.
« Respuesta #7 en: 21 Noviembre 2012, 16:59 pm »

Coloca el código que esta en Form_Load, nunca digas que no puedes hacer algo, aquí todos comenzamos con Hola Mundo, y como tu puedes ver ya has avanzado ¿o no? ;) No te rindas tan fácilmente se necesita mucha perseverancia para terminar un proyecto precisamente por la paciencia que hay que tener para hallar y solucionar los errores.

Gracias.

Pues mejor pongo todo el form (Aún le estoy retocando lo del Drag&Drop):

Código
  1. Imports System.Windows.Forms
  2. Imports System.IO
  3.  
  4. Public Class Form1
  5.    Dim filesystem As Object, ThisDir As Object
  6.    Dim mcheck(0) As CheckBox
  7.    Dim playerargs As String
  8.  
  9.  
  10. #Region "Propertys"
  11.  
  12.    'userSelectedPlayerFilePath
  13.    Public Property userSelectedPlayerFilePath() As String
  14.        Get
  15.            Return playertextbox.Text
  16.        End Get
  17.        Set(value As String)
  18.            playertextbox.Text = value
  19.        End Set
  20.    End Property
  21.  
  22.    ' userSelectedFolderPath
  23.    Public Property userSelectedFolderPath() As String
  24.        Get
  25.            Return foldertextbox.Text
  26.        End Get
  27.        Set(value As String)
  28.            foldertextbox.Text = value
  29.        End Set
  30.    End Property
  31.  
  32. #End Region
  33.  
  34. #Region "Load / Close"
  35.  
  36.    ' Form load
  37.    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  38.        Try
  39.  
  40.            Me.Text = My.Settings.APPName & " - By Elektro H@cker"
  41.  
  42.            If Not My.Computer.FileSystem.DirectoryExists(My.Settings.folderpath) Then
  43.                foldertextbox.Text = "Selext a folder..."
  44.                Me.Size = New System.Drawing.Size(362, 228)
  45.                Panel1.Size = New System.Drawing.Size(0, 0)
  46.                My.Settings.folderpath = Nothing
  47.                My.Settings.Save()
  48.            Else
  49.                foldertextbox.Text = My.Settings.folderpath
  50.            End If
  51.  
  52.            If Not My.Computer.FileSystem.FileExists(My.Settings.playerpath) Then
  53.                playertextbox.Text = "Selext a music player..."
  54.                My.Settings.playerpath = Nothing
  55.                My.Settings.Save()
  56.            Else
  57.                playertextbox.Text = My.Settings.playerpath
  58.            End If
  59.  
  60.            updatecheckboxes()
  61.            CargarPropiedades()
  62.        Catch
  63.  
  64.        End Try
  65.  
  66.    End Sub
  67.  
  68.    ' Form close
  69.    Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
  70.        Dim mCheckados(0) As Int32
  71.        Dim Cuantos As Int32 = 0
  72.        Dim empty = Nothing
  73.  
  74.        For Each c As CheckBox In Panel1.Controls
  75.            empty = "no"
  76.        Next
  77.        If Not empty = "no" Then
  78.            My.Settings.Valores = Nothing
  79.        Else
  80.            For i As Int32 = 0 To mcheck.Length - 1
  81.                If mcheck(i).Checked = True Then
  82.                    Cuantos += 1
  83.                    Array.Resize(mCheckados, Cuantos)
  84.                    mCheckados(Cuantos - 1) = i + 1
  85.                End If
  86.            Next
  87.            My.Settings.Valores = mCheckados
  88.        End If
  89.  
  90.        My.Settings.Save()
  91.    End Sub
  92.  
  93. #End Region
  94.  
  95.  
  96. #Region "Save / Get settings"
  97.  
  98.    ' Generate propertys
  99.    Public Sub GenerarPropiedades()
  100.        Dim CheckedN As String = Nothing
  101.        For i As Int32 = 0 To mcheck.Length - 1
  102.            If mcheck(i).Checked = True Then
  103.                CheckedN &= i + 1
  104.            End If
  105.        Next
  106.        My.Settings.Save()
  107.    End Sub
  108.  
  109.    ' load propertys
  110.    Private Sub CargarPropiedades()
  111.        Dim ListaCheckados As Int32() = My.Settings.Valores
  112.        For i As Int32 = 0 To mcheck.Length - 1
  113.            For Each indiceCheckado As Int32 In ListaCheckados
  114.                mcheck(indiceCheckado - 1).Checked = True
  115.            Next
  116.        Next
  117.    End Sub
  118.  
  119. #End Region
  120.  
  121.  
  122. #Region "Checkboxes"
  123.  
  124.    ' Checkbox drawing
  125.    Public Sub updatecheckboxes()
  126.        ' delete the old checkboxes
  127.        Panel1.Controls.Clear()
  128.        ' create the new checkboxes
  129.        Dim filesystem = CreateObject("Scripting.FileSystemObject")
  130.        Dim ThisDir = filesystem.GetFolder(My.Settings.folderpath)
  131.        Dim i As Int32 = 0
  132.        Dim pos As Int32 = 10
  133.        For Each folder In ThisDir.Subfolders
  134.            Array.Resize(mcheck, i + 1)
  135.            mcheck(i) = New CheckBox
  136.            With mcheck(i)
  137.                .AutoSize = True
  138.                .Location = New Point(10, pos)
  139.                .Name = "CheckBox" & i + 1
  140.                .Text = folder.Name
  141.            End With
  142.            Me.Panel1.Controls.Add(mcheck(i))
  143.            AddHandler mcheck(i).CheckedChanged, AddressOf LlamadaCheckBox
  144.            i += 1
  145.            pos += 20
  146.        Next
  147.  
  148.    End Sub
  149.  
  150.    ' Checkbox events
  151.    Public Sub LlamadaCheckBox(ByVal sender As Object, ByVal e As System.EventArgs)
  152.        Dim filesystem = CreateObject("Scripting.FileSystemObject")
  153.        Dim ThisDir = filesystem.GetFolder(My.Settings.folderpath)
  154.        Dim CheckboxN As CheckBox = CType(sender, CheckBox)
  155.        If CheckboxN.Checked = True Then
  156.            playerargs = playerargs & " " & ControlChars.Quote & Path.Combine(ThisDir.Path, CheckboxN.Text.ToString()) & ControlChars.Quote
  157.        Else
  158.            playerargs = Replace(playerargs, " " & ControlChars.Quote & Path.Combine(ThisDir.Path, CheckboxN.Text.ToString()) & ControlChars.Quote, "")
  159.        End If
  160.    End Sub
  161.  
  162. #End Region
  163.  
  164.  
  165. #Region "Buttons"
  166.  
  167.    ' Folder button
  168.    Public Sub C1Button3_Click(sender As Object, e As EventArgs) Handles folderbutton.Click
  169.        Dim folderselected As New System.Windows.Forms.FolderBrowserDialog
  170.        Dim Resultado As DialogResult
  171.        folderselected.RootFolder = Environment.SpecialFolder.Desktop
  172.        Resultado = folderselected.ShowDialog
  173.        If Resultado.ToString() = "OK" Then
  174.            userSelectedFolderPath = folderselected.SelectedPath
  175.            My.Settings.folderpath = folderselected.SelectedPath
  176.            My.Settings.Save()
  177.            playerargs = Nothing
  178.            Me.Size = New System.Drawing.Size(362, 540)
  179.            Panel1.Size = New System.Drawing.Size(322, 296)
  180.            updatecheckboxes()
  181.        End If
  182.    End Sub
  183.  
  184.    ' Player button
  185.    Public Sub C1Button1_Click(sender As Object, e As EventArgs) Handles playerbutton.Click
  186.        Dim playerselected As New OpenFileDialog()
  187.        playerselected.InitialDirectory = Environ("programfiles")
  188.        playerselected.Title = "Select your favorite music player"
  189.        playerselected.Filter = "Music players|bsplayer.exe;mpc.exe;mpc-hc.exe;mpc-hc64.exe;umplayer.exe;vlc.exe;winamp.exe;wmp.exe"
  190.        PlayerDialog.FilterIndex = 1
  191.        Dim selection As System.Windows.Forms.DialogResult = playerselected.ShowDialog()
  192.        If selection = DialogResult.OK Then
  193.            userSelectedPlayerFilePath = playerselected.FileName
  194.            My.Settings.playerpath = playerselected.FileName
  195.            My.Settings.Save()
  196.        End If
  197.    End Sub
  198.  
  199.    ' Play button
  200.    Public Sub C1Button2_Click(sender As Object, e As EventArgs) Handles playbutton.Click
  201.        If Not playerargs = Nothing Then
  202.            Process.Start(userSelectedPlayerFilePath, playerargs)
  203.            If autoclose.Checked = True Then
  204.                Me.Close()
  205.            End If
  206.        Else
  207.            MessageBox.Show("You must select at least one folder...", My.Settings.APPName)
  208.        End If
  209.    End Sub
  210.  
  211.    ' Select  ALL checkboxes
  212.    Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles selectall.CheckedChanged
  213.        If selectall.Checked = False Then
  214.            For Each ctrl In Panel1.Controls
  215.                ctrl.Checked = False
  216.            Next
  217.            selectall.Text = "Select all"
  218.        Else
  219.            For Each ctrl In Panel1.Controls
  220.                ctrl.Checked = True
  221.            Next
  222.            selectall.Text = "Unselect all"
  223.        End If
  224.    End Sub
  225.  
  226. #End Region
  227.  
  228.  
  229. #Region "Drag & Drop"
  230.  
  231.  
  232.  
  233.  
  234.    Private Sub Panel1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Panel1.DragDrop
  235.        If e.Data.GetDataPresent(DataFormats.FileDrop) Then
  236.            Dim Objetos As String() = e.Data.GetData(DataFormats.FileDrop)
  237.            Panel1.Text = Objetos(0)
  238.            userSelectedFolderPath = Objetos(0)
  239.            My.Settings.folderpath = Objetos(0)
  240.            My.Settings.Save()
  241.            playerargs = Nothing
  242.            updatecheckboxes()
  243.        End If
  244.    End Sub
  245.  
  246.    Private Sub Panel1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Panel1.DragEnter
  247.        If e.Data.GetDataPresent(DataFormats.FileDrop) Then
  248.            e.Effect = DragDropEffects.All
  249.        End If
  250.    End Sub
  251.  
  252.   Private Sub TextBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles foldertextbox.DragDrop
  253.        If e.Data.GetDataPresent(DataFormats.FileDrop) Then
  254.            Dim Objetos As String() = e.Data.GetData(DataFormats.FileDrop)
  255.  
  256.            Dim attributes = Objetos(0)
  257.            If ((attributes And FileAttributes.Directory) = FileAttributes.Directory) Then
  258.                MsgBox("es un dir")
  259.            Else
  260.                MsgBox("no es un dir")
  261.            End If
  262.  
  263.            foldertextbox.Text = Objetos(0)
  264.            userSelectedFolderPath = Objetos(0)
  265.            My.Settings.folderpath = Objetos(0)
  266.            My.Settings.Save()
  267.            playerargs = Nothing
  268.            updatecheckboxes()
  269.        End If
  270.    End Sub
  271.  
  272.    Private Sub TextBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles foldertextbox.DragEnter
  273.        If e.Data.GetDataPresent(DataFormats.FileDrop) Then
  274.            e.Effect = DragDropEffects.All
  275.        End If
  276.    End Sub
  277.  
  278. #End Region
  279.  
  280.  
  281. End Class
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Cuando compilo mi aplicación, no funciona.
« Respuesta #8 en: 21 Noviembre 2012, 17:08 pm »

No ignores errores, no es necesario un conocimiento alto del lenguaje para detectar ese problema, el error es más que descriptivo.
En el método CargarPropiedades estas omitiendo validar algo.

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
HdM


Desconectado Desconectado

Mensajes: 1.674



Ver Perfil
Re: Cuando compilo mi aplicación, no funciona.
« Respuesta #9 en: 21 Noviembre 2012, 17:29 pm »

Hola.

En el método CargarPropiedades estas omitiendo validar algo.

Cuando abres la app por 1ª vez, ¿cómo está inicializado My.Settings.Valores ?

Podrías crearte un Sub con el código que metes en el FormClosing y ese Sub meterlo en Load llámandolo antes del CargaPropiedades, si My.Settings.Valores no está inicializado.

Saludos.
En línea

- Nice to see you again -
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
error cuando compilo- dev c++
Programación C/C++
kiara_luna 1 3,602 Último mensaje 15 Agosto 2011, 13:32 pm
por Dark Invader
Mi programa no se abre cuando lo compilo desde cmd
Java
VintageChanel 6 5,363 Último mensaje 24 Enero 2015, 03:36 am
por Usuario Invitado
MOVIDO: Mi programa no se abre cuando lo compilo desde cmd
Programación General
Eleкtro 0 1,579 Último mensaje 21 Enero 2015, 06:52 am
por Eleкtro
Error lógico cuando compilo ejercicio - CONSULTA
Programación C/C++
Cero++ 6 1,927 Último mensaje 11 Diciembre 2018, 20:51 pm
por Cero++
error en poo cuando compilo
Programación C/C++
sytem200 2 2,113 Último mensaje 20 Junio 2019, 07:09 am
por jmpesp
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines